在发出HTTP请求时接收两次响应

时间:2013-12-07 07:51:09

标签: ios7 xcode4.5

我正在使用POST方法对服务器进行HTTP调用。当单击注册按钮时,按照下面的说明调用服务

 NSURL * url=[NSURL URLWithString:[NSString         stringWithFormat:@"http://offers2win.com/api/v1/users?user[email]=%@&user[password]=%@&user[password_confirmation]=%@",username,password,confirmpassword]];
request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
connection=[[NSURLConnection alloc] initWithRequest:request delegate:self];

将响应数据保存在字典中

 NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
returnString  = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:[returnString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil];

但代表被叫了两次

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
 NSLog(@"Recieved");
}

可能是什么原因?而且需要很长时间才能得到答复。

1 个答案:

答案 0 :(得分:0)

这不是错误。 Apple已经在NSURLConnectionDataDelegate Protocol Reference中说明了这一点:

  

在极少数情况下,例如在HTTP加载的情况下   加载数据的内容类型是multipart / x-mixed-replace ,.   delegate将收到多个连接:didReceiveResponse:   信息。如果发生这种情况,代表应丢弃所有数据   以前通过连接传递:didReceiveData:,应该是   准备处理由报告的可能不同的MIME类型   新报告的网址回复。

点击此处:NSURLConnectionDataDelegate Protocol Reference