新人分不多求问,多次发送http异步请求,如何在DidFinishLoading返回里面判断具体对应的是哪一次请求呢?

时间:2021-09-22 19:27:08
如题,新人一枚     目前我是这样写的   


//请求方式
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy 
[NSURLConnection connectionWithRequest:request delegate:self];

//接收方式
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *) connection didReceiveData:(NSData *)data 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 


多次发起http异步请求之后    我就不知道返回的是哪一次的请求数据了,因为是异步的  所以返回顺序是乱的把    我有一个同事说NSURLConnection已经封装好了顺序的   发起异步请求的顺序是什么样的  那么接收顺序也会是什么样的  是这样么?

4 个解决方案

#1


为什么不使用NSURLConnection  的sendAsynchronousRequest 发送异步请求的 block回调。这样你就不必担心如何去判断哪个请求返回过来的数据了。因为各个请求的回调是在它们自己的block中来处理的

#2


[NSURLConnection sendAsynchronousRequest:request 
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               ////////.to do 
    }];

#3


引用 2 楼 zhanglei5415 的回复:
[NSURLConnection sendAsynchronousRequest:request 
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               ////////.to do 
    }];


谢谢指导呀

#4


楼上的方法确实是 正解 .
另外 你同事 说的 如下 :
“ 发起异步请求的顺序是什么样的  那么接收顺序也会是什么样的  ” 这句话应该是不正确的  , 接收 的顺序 需要看 哪一个 请求 最先完成,最先完成的 请求当然 就会 最先 回调 。

#1


为什么不使用NSURLConnection  的sendAsynchronousRequest 发送异步请求的 block回调。这样你就不必担心如何去判断哪个请求返回过来的数据了。因为各个请求的回调是在它们自己的block中来处理的

#2


[NSURLConnection sendAsynchronousRequest:request 
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               ////////.to do 
    }];

#3


引用 2 楼 zhanglei5415 的回复:
[NSURLConnection sendAsynchronousRequest:request 
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               ////////.to do 
    }];


谢谢指导呀

#4


楼上的方法确实是 正解 .
另外 你同事 说的 如下 :
“ 发起异步请求的顺序是什么样的  那么接收顺序也会是什么样的  ” 这句话应该是不正确的  , 接收 的顺序 需要看 哪一个 请求 最先完成,最先完成的 请求当然 就会 最先 回调 。