美文网首页
iOS原生网络请求-"连接"与"会

iOS原生网络请求-"连接"与"会

作者: 小苗晓雪 | 来源:发表于2017-02-01 22:56 被阅读346次

1.NSURLConnection

  • 1.1 get 异步请求
NSString *urlString = @"http:// + (请求字段)";
//url
NSURL *url = [NSURL URLWithString:urlString] ;
//request
NSURLRequest *request = [NSURLRequest requestWithURL:url] ;
//发送请求
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
    //解析data
}] ;
  • 1.2 post 异步请求
*post*与*get*不同的是:*post*需要设置请求方式和请求体
request.HTTPMethod = @"POST" ;
request.HTTPBody = [@"cid_rel=207&page=1" dataUsingEncoding:NSUTF8StringEncoding] ;
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
    //解析data
}] ;
  • 1.3 post 同步请求
NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error] ;
  • 1.4代理请求的方式:
    • 1.遵守NSURLConnectionDataDelegate协议。
    • 2.实现代理方法
//该方法当接收到返回数据时会被调用 , 在其中进行了数据容器的初始化操作:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"接收响应") ;
}
//该方法在接收数据过程中被多次调用 , 在其中会将接收到的数据传递进来:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    NSLog(@"接收数据") ;
    //NSMutableData *myData
    [self.myData appendData:data] ;
}
//该方法在接收数据完成之后调用 , 在其中将接受到完整的数据转化为字符串进行了打印操作:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"数据接收完毕") ;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:self.myData options:NSJSONReadingMutableContainers error:nil] ;
    NSLog(@"%@",dic) ;
}

2.NSURLSession

  • 2.1 get方式:
//session管理者
//share-->单例:
NSURLSession *session = [NSURLSession sharedSession] ;
//请求网络数据
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    //解析data    
}];
//发起网络请求
[task resume] ;
  • 2.2post方式
request.HTTPMethod = @"POST" ;
request.HTTPBody = [@"cid_rel=200&page=4" dataUsingEncoding:NSUTF8StringEncoding] ;
NSURLSession *session = [NSURLSession sharedSession] ;
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    //解析数据data ;
    //打印error ;
}] ;
//发起网络请求
[task resume] ;

愿编程让这个世界更美好

相关文章

网友评论

      本文标题:iOS原生网络请求-"连接"与"会

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