之前做网络请求的时候,大部分时候都是用的三方AFNetWorking的库来进行网络请求的封装和调用,对于常规的GET请求已经POST请求使用起来非常容易,但是后面在实际项目中遇到了利用PHP写的后台,要求使用restFull请求进行网络请求,翻遍了很多资料都无果,后来终于了解到了一种NSURLSession系统库的restfull请求解决方案,以此来分享给大家。
大家都知道restFull请求的请求方式分为很多种例如PUT,DELETE,POST等,还带有请求头,具体的大家可以使用Google的浏览器下载一个restfullApi的工具查看一下
- (void)sendResultToServiceWithMethod:(NSString *)method WithUrl:(NSString *)url withSendInfo:(NSDictionary *)paramDic responseCode:(void(^)(NSInteger code, NSData * _Nullable responseData))responses addShowView:(UIView *) mainView
{
if (mainView ) {
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD showHUDAddedTo:mainView animated:YES];
});
}
NSURLSession *session = [NSURLSession sharedSession];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:method];
//请求头设定,使用Bearer方式的Token传递也在此设置
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
request.HTTPBody = [NSJSONSerialization dataWithJSONObject:paramDic options:NSJSONWritingPrettyPrinted error:nil];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSHTTPURLResponse *realResponse = (NSHTTPURLResponse *)response;
responses(realResponse.statusCode,data);
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideAllHUDsForView:mainView animated:YES];
});
}];
[task resume];
}
------------------------------------------------------------------------------------------------------
以上方法都是个人使用中总结出来的,实际运用方法还请参考苹果官方开发文档