带有 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”标签的描述。这不适合您的问题。 只是一个提示:任何时候你用“您没有启动连接。您应该使用[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 请求
使用 NSURLConnection 和 HTTPS 发送 POST