Ios Can';似乎没有收到来自帖子的回复
我四处搜索,找不到正确的答案,但是我有一段代码,它将数据发布到我的web服务器,我试图获取HTTP响应,但响应不断返回(null)。我可以确认连接成功,因为if语句(见下文)执行了适当的代码 这是我的密码:Ios Can';似乎没有收到来自帖子的回复,ios,objective-c,nsurlconnection,nsurl,nsurlrequest,Ios,Objective C,Nsurlconnection,Nsurl,Nsurlrequest,我四处搜索,找不到正确的答案,但是我有一段代码,它将数据发布到我的web服务器,我试图获取HTTP响应,但响应不断返回(null)。我可以确认连接成功,因为if语句(见下文)执行了适当的代码 这是我的密码: -(void)submitAction{ NSString *post = [NSString stringWithFormat:@"&var1=%@&var2=%@&var3=%@&var4=%@", _v
-(void)submitAction{
NSString *post = [NSString stringWithFormat:@"&var1=%@&var2=%@&var3=%@&var4=%@",
_var1, _var2, _var3, _var4];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://my-web-server.com/path-to-web-service/"]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
NSURLResponse *response;
NSLog(@"%@", response); // Always returns null :(
if(conn){
NSLog(@"Connection Successful."); // Connection is successful in my tests.
}else{
NSLog(@"Connection could not be made");
}
}
以下是在my.h文件中实现的NSURLConnectionLegate委托:
@interface AddTaskViewController : UIViewController <UITextFieldDelegate, UIPickerViewDelegate, NSURLConnectionDelegate>
@interface AddTaskViewController:UIViewController
有人能看出我做错了什么吗?服务器应该返回一个JSON字符串(当我通过浏览器测试web服务时会返回),但NSURLRresponse始终为空
谢谢
Peter使用
NSURLConnection
的initWithRequest:delegate:
启动异步下载,因此它立即返回并立即执行
response
始终为nil
,因为您刚刚定义了它,然后记录了它,但从未将其设置为任何值。这需要在连接:didReceiveResponse:
委托方法中完成
如果您执行if(conn){
,那么conn
的存在并不意味着连接成功,它只是意味着可以创建连接(基本上,您没有提供无效的请求)。您还不知道它是否会工作
实现来自(和)的委托方法以访问响应和下载的数据(当数据可用时).您必须实现协议。阅读有关委派的内容。我的.h文件中已经实现了此委派。请稍候,我将更新我的代码。您不能在.h文件中实现任何内容。您在.m文件中实现委派。再次,阅读以了解委派是什么以及如何使用它。顺便说一句,您的帖子正文在开始时有额外的
&
。Second,而不是使用dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES
您应该对单个值使用CFURLCreateStringByAddingPercentEscapes
,如末尾所示。