美文网首页
iOS 网络之数据请求

iOS 网络之数据请求

作者: Lambo316 | 来源:发表于2016-06-28 10:07 被阅读721次

一、异步

1、GET请求(BLOCK)

//初始化一个session

NSURLSession *session = [NSURLSession sharedSession];

//通过地址得到一个url

NSString *urlStr = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20151101&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";

NSURL *url = [NSURL URLWithString:urlStr];

//通过单例的session得到一个sessionTask,且通过URL初始化task 在block内部可以直接对返回的数据进行处理

NSURLSessionTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

//请求之后会调用这个block

NSString *resultStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"resultStr->%@",resultStr);

}];

//启动人物,让task开始之前执行

[task resume];

2、POST请求(BLOCK)

NSString *urlString = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";

NSURL *url = [NSURL URLWithString:urlString];

//初始化request 并配置httpBody httpMethod

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:30];

request.HTTPBody = [@"date=20151101&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" dataUsingEncoding:NSUTF8StringEncoding];

request.HTTPMethod = @"POST";

//配置session 并让task开始执行

NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

NSString *resultStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"resultStr->%@",resultStr);

}];

[task resume];

3、Delegate请求

#pragma mark - NSURLSessionDataDelegate代理方法

//服务器开始响应,客户端将要接收数据

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response

completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler

{

//允许服务器开始响应

completionHandler(NSURLSessionResponseAllow);

//    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

self.mulData = [NSMutableData data];

}

//接收数据(会调用多次)

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data

{

//处理每次接受到得数据

//将每次接收到的data片段,拼接到_mulData

[_mulData appendData:data];

}

//数据接收完成,网络请求成功

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

{

NSLog(@"result->%@",[[NSString alloc]initWithData:_mulData encoding:NSUTF8StringEncoding]);

}

相关文章

  • iOS 网络之数据请求

    一、异步 1、GET请求(BLOCK) //初始化一个session NSURLSession *session ...

  • 2018-05-17

    ios网络请求,之前从来没有接触过iOS,最近要做一个app,做到网络请求这(就是通过URL来请求数据),自己总结...

  • iOS开发之网络数据请求

    一、网络请求的基础知识 ios9: 重大改变(1)NSURLConnection:ios9之前使用,之后弃用NSU...

  • iOS popViewController 失效

    iOS7在viewDidLoad中,请求网络数据,(网络请求开辟线程),在请求失败的时候,在主线程中 popVie...

  • iOS popViewController 失败

    iOS7在viewDidLoad中,请求网络数据,(网络请求开辟线程),在请求失败的时候,在主线程中 popVie...

  • 2019-04-30

    iOS开发之网络数据解析(一)--JSON解析简介 原文链接:原文链接 前言:对服务器请求之后,返回给客户端的数据...

  • iOS网络请求相关框架的使用

    iOS网络请求相关框架的使用 iOS网络请求相关框架的使用

  • 网络数据请求自身心得

    今天来说说关于iOS开发过程中的网络数据请求。 现在常用的网络数据请求常见的有四种方式:同步GET,同步POST,...

  • IOS开发之网络数据解析(一)--JSON解析简介

    iOS开发之网络数据解析(一)--JSON解析简介 摘要: 前言:对服务器请求之后,返回给客户端的数据,一般都是J...

  • iOS开发YN组件之网络层

    iOS开发组件YNKit之网络数据请求 该组件由我和占宇同事共同开发的iOS开发高效的一个组件集,在快捷开发中提炼...

网友评论

      本文标题:iOS 网络之数据请求

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