我正在使用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");
}
可能是什么原因?而且需要很长时间才能得到答复。
答案 0 :(得分:0)
这不是错误。 Apple已经在NSURLConnectionDataDelegate Protocol Reference中说明了这一点:
在极少数情况下,例如在HTTP加载的情况下 加载数据的内容类型是multipart / x-mixed-replace ,. delegate将收到多个连接:didReceiveResponse: 信息。如果发生这种情况,代表应丢弃所有数据 以前通过连接传递:didReceiveData:,应该是 准备处理由报告的可能不同的MIME类型 新报告的网址回复。