带有 POST 的 NSURLConnection 不起作用

Posted

技术标签:

【中文标题】带有 POST 的 NSURLConnection 不起作用【英文标题】:NSURLConnection with POST doesn't work 【发布时间】:2013-05-31 16:05:28 【问题描述】:

我正在尝试使用 POST 请求 URL 解析参数,但 mypage.php 没有收到此参数... 这是我的代码:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://myurl/mypage.php"]];
NSString *params = [[NSString alloc]initWithFormat:@"name=%@&surname=%@&location=%@&email=%@&password=%@&gender=%@&tipo=%@", name, surname, location, email, password, gender, tipo];                   
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(params);
NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];
if (conn) 
    webData = [[NSMutableData data] retain];

else


和mypage.php

if($_POST['name'] != "" && $_POST['email'] != "") 
//Here the $_POST['name'] and the $_POST['email'] are empty...

【问题讨论】:

请阅读“Xcode”标签的描述。这不适合您的问题。 只是一个提示:任何时候你用“ doesn't work”为问题命名时,你会立即让许多读者对你产生偏见。 很可能工作得很好,但你根本不知道如何使用它。 【参考方案1】:

您没有启动连接。您应该使用[conn start];

【讨论】:

“它不起作用”是没有帮助的。是否有任何控制台日志消息?错误?您是否正在实施任何委托方法?你怎么知道它在你的脚本中是空的并且脚本不仅仅是没有被调用?你能发布完整的代码吗? 我已经解释了“不起作用”的意思,结果是“” not enter in condition from mypage.php if($_POST['name'] != " " && $_POST['email'] != "") 布鲁诺documentation 声明:“返回一个初始化的 URL 连接并开始为 URL 请求加载数据。”【参考方案2】:

试试这个:

NSString *params=[NSString stringWithFormat:@"name=%@&surname=%@&location=%@&email=%@&password=%@&gender=%@&tipo=%@", name, surname, location, email, password, gender, tipo];
NSData *postData=[params dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:@"http://myurl/mypage.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
[request setValue:[NSString stringWithFormat:@"%i",postData.length] forHTTPHeaderField:@"Content-Length"];  

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (data!=nil) 
   NSString *output=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
   NSLog(@"output: %@", output);
else
   NSLog(@"data is empty");

【讨论】:

以上是关于带有 POST 的 NSURLConnection 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 使用 NSURLConnection 发送 POST

NSURLConnection 发送 GET 请求而不是 POST 请求

ios网络NSURLConnection POST

使用 NSURLConnection 和 HTTPS 发送 POST

在 Swift 中为 SOAP POST 从 NSURLConnection 迁移到 NSURLSession

OC -网络请求 - NSURLConnection - POST