美文网首页iOS DeveloperiOS 开发
NSURLSession来发送同步请求

NSURLSession来发送同步请求

作者: IT言 | 来源:发表于2016-05-25 22:27 被阅读2804次

NSURLConnection 发送同步请求的方法在iOS9.0已经被废弃

+ (nullable NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse * __nullable * __nullable)response error:(NSError **)error NS_DEPRECATED(10_3, 10_11, 2_0, 9_0, "Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h") __WATCHOS_PROHIBITED;

用来替代的NSURLSession 只有带block的方法可以调用,没有成为同步方法,我们稍微改一下,让它支持同步的请求

- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error

{

          NSError __block *err = NULL;

          NSData __block *data;

          BOOL __block reqProcessed = false;

          NSURLResponse __block *resp;

          [[[NSURLSession sharedSession] dataTaskWithRequest:request                completionHandler:^(NSData * _Nullable _data, NSURLResponse * _Nullable _response, NSError * _Nullable _error) {

                  resp = _response;

                   err = _error;

                    data = _data;

           reqProcessed = true;

}] resume];

while (!reqProcessed) {

          [NSThread sleepForTimeInterval:0];

}

         *response = resp;

         *error = err;

           return data;

}

请求的时候调用

/NSData *data = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&resp error:&err];

NSData *data = [self sendSynchronousRequest:theRequest returningResponse:&resp error:&err];

相关文章

网友评论

    本文标题:NSURLSession来发送同步请求

    本文链接:https://www.haomeiwen.com/subject/baitdttx.html