NSURLConnection的使用

一:NSURLConnection(IOS9.0已经弃用)是早期apple提供的http访问方式。以下列出了常用的几个场景:GET请求,POST请求,Response中带有json数据

对于NSURLConnection有以下注意事项:(1)sendAsynchronourequest: queue: completionHandler:函数中的queue参数表示的是“handler 这个block运行在queue中,如果queue为mainThread,那么hanlder就运行在主线程;所以在处理UI的时候需要注意这个参数”

(1)Get请求(返回文本)

  //Request
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest new];
    [urlRequest setURL:[NSURL URLWithString:@"http://XXX.sinaapp.com/test/test.php?namr&id=43"]];
    [urlRequest setTimeoutInterval:10.0f];
    [urlRequest setHTTPMethod:@"GET"];
    [urlRequest setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];

    NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    [NSURLConnection sendAsynchronousRequest:urlRequest
                                       queue:queue
                           completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        //根据回复Headers,确认是是否为NSHTTPURLResponse的对象
      if([response isKindOfClass:[NSHTTPURLResponse class]]){
            NSHTTPURLResponse *resHttp = (NSHTTPURLResponse *)response;
            NSLog(@"status = %ld",resHttp.statusCode);//200 304 401......
            NSDictionary *dicHeader = resHttp.allHeaderFields;
            NSLog(@"headers = %@",dicHeader);
      }
      else{
            NSLog(@"not http");
      }
      if(data){
            NSString *html = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"%@",html);
      }
    }];

(2)POST请求(返回文本)

    //Request

    NSMutableURLRequest *urlRequest = [NSMutableURLRequest new];

    [urlRequest setURL:[NSURL URLWithString:@"http://XXX.sinaapp.com/test/test.php"]];
    [urlRequest setTimeoutInterval:10.0f];
    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];
    NSString *strBody = @"p1=abc&p2=12";
    [urlRequest setHTTPBody:[strBody dataUsingEncoding:NSUTF8StringEncoding]];

    NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    [NSURLConnection
     sendAsynchronousRequest:urlRequest
     queue:queue
     completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
         //确认是http
         if([response isKindOfClass:[NSHTTPURLResponse class]]){
             NSHTTPURLResponse *resHttp = (NSHTTPURLResponse *)response;
             NSLog(@"status = %ld",resHttp.statusCode);//200 304 401......
             NSDictionary *dicHeader = resHttp.allHeaderFields;
             NSLog(@"headers = %@",dicHeader);
         }
         else{
             NSLog(@"not http");
         }
         if(data){
             NSString *html = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
             NSLog(@"%@",html);
         }
    }];

(3)Response中有Json数据

    //Request

    NSMutableURLRequest *urlRequest = [NSMutableURLRequest new];

    [urlRequest setURL:[NSURL URLWithString:@"http://XXX.sinaapp.com/test/test.php"]];
    [urlRequest setTimeoutInterval:10.0f];
    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];
    NSString *strBody = @"p1=abc&p2=12";
    [urlRequest setHTTPBody:[strBody dataUsingEncoding:NSUTF8StringEncoding]];

    NSOperationQueue *queue = [[NSOperationQueue alloc]init];

    [NSURLConnection
     sendAsynchronousRequest:urlRequest
     queue:queue
     completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
         NSError *err2 = nil;
         id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&err2];

         if([jsonObject isKindOfClass:[NSDictionary class]]){
             NSLog(@"NSDictionary");
             NSDictionary *dic = jsonObject;
             NSLog(@"dic = %@",dic);
         }
         else if([jsonObject isKindOfClass:[NSArray class]]){
             NSLog(@"NSDictionary");
             NSDictionary *arr = jsonObject;
             NSLog(@"arr = %@",arr);
         }
     }];

 

(4)Request中带有Json格式数据

时间: 2024-10-22 17:57:38

NSURLConnection的使用的相关文章

多线程与网络之NSURLConnection发送请求

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

iOS学习笔记12-网络(一)NSURLConnection

一.网络请求 在网络开发中.须要了解一些经常使用的请求方法: GET请求:get是获取数据的意思,数据以明文在URL中传递,受限于URL长度,所以数据传输量比較小. POST请求:post是向server提交数据的意思.提交的数据以实际内容形式存放到消息头中进行传递,无法在浏览器url中查看到,大小没有限制. HEAD请求:请求头信息,并不返回请求数据体,而仅仅返回请求头信息,经常使用用于在文件下载中取得文件大小.类型等信息. 二.NSURLConnection NSURLConnection是

NSURLConnection和Runloop(面试)

(1)两种为NSURLConnection设置代理方式的区别 //第一种设置方式: //通过该方法设置代理,会自动的发送请求 // [[NSURLConnection alloc]initWithRequest:request delegate:self]; //第二种设置方式: //设置代理,startImmediately为NO的时候,该方法不会自动发送请求 NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:

文件下载 NSURLConnection——小文件下载

1.下载小文件,只适合几百k,1.2M的文件 //1.设置网址 //2.加载请求 //3.设置代理 //4.实现代理方法下载文件 NSURL *url = [NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1492791082124&di=fc642407b4ec19430334653a9b873cff&imgtype=0&a

ios开发网络学习:一:NSURLConnection发送GET,POST请求

#import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> /** 注释 */ @property (nonatomic, strong) NSMutableData *resultData; @end @implementation ViewController #pragma mark ---------------------- #pragma mark la

NSURLConnection / NSURLSession/ SDWebImage

1. NSURLConnection (iOS9开始被弃用)=========================================== 此类的对象加载一个URL请求对象,通过异步/同步的方式发送请求,并获得响应. 此类位于Foundation框架下,继承自NSObject ------------------------------ 异步/同步?    通讯方式 异步:在请求发送后,无需等待响应结果,而是可以继续后续其他操作,该请求的响应在回调方法中处理(通常用到的代理方法或bloc

iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄

前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传.    在实际开发中,输入输出流用的比较少,但是用起来也是很方便的.iOS开发用到的输入输出流和在Java中的输入输出流是几乎一样的,本质也是一个意思:将网络返回的数据当做流来处理.    输入输出的理解:输入到哪里?输出到哪里?这个问题不难理解,输入输出是要站着服务器角度来思考的,下面用图来解释:    代码关键词: 1.在接收到响应头的代理

step 2 NSURLConnection

NSURLConnection 步骤 NSURL:确定要访问的资源 NSURLRequest:根据 URL 建立请求,向服务器索要数据 NSURLConnection:建立网络连接,将请求(异步)发送给服务器 示例代码 // 1. `NSURL`:确定要访问的资源 NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"]; // 2. `NSURLRequest`:根据 `URL` 建立请求,向服务器索要数据 NSURLReque

NSURLConnection使用

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute