iOS HTTP 请求被调用两次

标签 ios httprequest nsurlrequest http-get

我有一个向服务器发出 GET 请求的函数。它工作正常但由于某种原因它被调用了两次。我在按下按钮时调用函数。

这是函数代码:

-(void) GETasync: (NSString *) path{
    receivedData = [[NSMutableData alloc] init];
    NSURLRequest *request=[NSURLRequest requestWithURL:
                              [NSURL URLWithString: path]
                              cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                              timeoutInterval:60.0];
    NSHTTPURLResponse * response;
    NSError * error;
    NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];  
    NSLog(@"data received");
}

所以我在输出中看到:

2012-03-07 16:36:41.509 KW2[24136:bf03] data received
2012-03-07 16:36:41.694 KW2[24136:bf03] data received

我也有一个 POST 请求的函数,它也是同样的问题。

最佳答案

我假设您在委托(delegate)方法 connection:didReceiveData: 中打印出该日志。一个连接可以多次调用该方法——事实上,它通常至少被调用两次。

来自文档:

当接收到数据时,代理会定期发送 connection:didReceiveData: 消息。委托(delegate)实现负责存储新接收到的数据。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // Append the new data to receivedData.
    // receivedData is an instance variable declared elsewhere.
    [receivedData appendData:data];
}

编辑:我看到您在最近的编辑中添加了日志记录信息(或者我可能没有立即看到它 - 我真可耻)。

您是否可能通过通知处理程序调用该方法?如果是这样,您是否可能为该通知进行了双重注册 -> 因此您的处理程序被调用了两次。

关于iOS HTTP 请求被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600999/

相关文章:

ios - 在 iOS 应用程序的 UIWebView 中捕获 POST 参数

iphone - 如何用字符串分隔的组件进行json解析

java - 无法使用 NSInputStream 在 iOS 客户端中读取来自 Java 服务器的响应

ios - 如何明智地将 FirebaseFirestoreSwift 与 Carthage 结合使用?

ios - 如何在 XCode 中临时禁用/删除 Vuforia

javascript - 如何将 API 请求中的 JSON 获取到我页面的 javascript 中?

laravel - 无法在 laravel 中验证输入文件

ruby-on-rails - 422错误中的 'semantic errors'或 'semantically erroneous'是什么意思?

objective-c - 如何在多部分表单中将多个文件作为附件发送 [HTTP POST 请求]

javascript - UIWebView 中 PUT 或 POST 类型的 ajax 不传递 HTTP 主体