Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于iOS异步http请求,如何将接收到的数据连接到请求?_Ios_Http_Asynchronous - Fatal编程技术网

对于iOS异步http请求,如何将接收到的数据连接到请求?

对于iOS异步http请求,如何将接收到的数据连接到请求?,ios,http,asynchronous,Ios,Http,Asynchronous,我正在从某个服务器异步加载某些映像。我使用NSURLConnection connectionWithRequest方法一次触发多个请求,并使用NSURLConnectionLegate didReceiveData接收数据 在didReceiveData,如何知道此数据与哪个请求匹配?在didReceiveResponse中,我可以使用给定响应的URL方法作为参数,但在didReceiveData中,我只有收到的数据 完美的答案似乎是使用NSURLConnection sendAsynchro

我正在从某个服务器异步加载某些映像。我使用NSURLConnection connectionWithRequest方法一次触发多个请求,并使用NSURLConnectionLegate didReceiveData接收数据

在didReceiveData,如何知道此数据与哪个请求匹配?在didReceiveResponse中,我可以使用给定响应的URL方法作为参数,但在didReceiveData中,我只有收到的数据

完美的答案似乎是使用NSURLConnection sendAsynchronousRequest,因为完成处理程序具有所有必需的参数:(NSURLResponse*、NSData*、NSError*)。我可以使用[response URL]与原始请求进行匹配。。。除了一种情况:并非所有我试图下载的图像都存在。在这种情况下,请求被重定向到一个通用错误页面,并收到该通用页面的URL,因此我无法将响应与我发出的请求相匹配。这一点我可以处理connectionWithRequest,但我无法同时兼顾这两个方面。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
你可以用

NSURLRequest *request = [connection originalRequest];
以获取启动连接的请求

(此方法自iOS 5.0起可用,但我在我的Xcode iOS 5.1库中找不到。您可以在iOS 6库、头文件NSURLConnection.h或此处找到它:)

可以在此线程中找到更多管理多个连接的方法:


如果使用
sendAsynchronousRequest:queue:completionHandler:
,则只需在完成块中使用
request
参数。

At connection:didReceiveData:第一个参数是NSURLConnection实例。所以我不明白问题出在哪里。创建一个连接,然后向该连接发送一个请求,代理将收到带有连接值的connection:didReceiveData

如果对所有请求使用同一个委托,则必须检查连接,以便说出与哪个请求关联

也许您必须维护一个连接/请求对表