iOS网络-NSURLConnection简单介绍

GET请求

同步请求(GET-SendSync)
(1)步骤
    1 设置请求路径
    2 创建请求对象(默认是GET请求,且已经默认包含了请求头)
    3 使用NSURLSession sendsync方法发送网络请求
    4 接收到服务器的响应后,解析响应体

(2)相关代码

//1.确定请求路径
    //协议头+主机地址+接口名称+?+参数1&参数2&参数3
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];
    //2.创建请求对象|GET
    //默认已经包含了请求头|请求方法(GET)
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
    //3.发送请求(GET)
    //同步请求,会阻塞线程
    /*
     第一个参数:请求对象
     第二个参数:响应头
     第三个参数:错误信息
     返回值:NSData类型,响应体信息
     */
    NSError *error = nil;
    NSURLResponse *response = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    //4.解析数据
    if (error == nil) {
        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
        NSLog(@"%@---%@",response,error);
    }

异步请求(GET-SendAsync)

(1)相关说明
     该方法不会卡住当前线程,网络请求任务是异步执行的

(2)相关代码

    //1.确定请求路径
    //协议头+主机地址+接口名称+?+参数1&参数2&参数3
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=888&pwd=520it&type=JSON"];
    //2.创建请求对象|GET
    //默认已经包含了请求头|请求方法(GET)
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
    //3.发送异步请求
    /*
     第一个参数:请求对象
     第二个参数:队列,决定block在哪个线程调用
     第三个参数:completionHandler 当请求结束(成功|失败)的时候执行
        response:响应头
        data:响应体信息
     connectionError:错误信息
     */
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        //4.解析数据
        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
    }];

异步请求(GET-代理)
(1)步骤
      1 确定请求路径
      2 创建请求对象
      3 创建NSURLConnection对象并设置代理
      4 遵守NSURLConnectionDataDelegate协议,并实现相应的代理方法
      5 在代理方法中监听网络请求的响应
(2)设置代理的几种方法

//1.确定请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];

    //2.创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    //3.设置代理
    //第一种方式,该方法会自动发送网络请求
   //NSURLConnection *connect =  [[NSURLConnection alloc]initWithRequest:request delegate:self];

     //第二种方式,同上
    //[NSURLConnection connectionWithRequest:request delegate:self];

    //第三种方法
    /*
     第一个参数:请求对象
     第二个参数:谁成为代理
     第三个参数:startImmediately :是否立即开始发送网络请求
     */
    NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO];    [connect start];
    //[connect cancel]; 取消
#pragma mark - NSURLConnectionDataDelegate
//1.当接受到服务器响应的时候会调用:response(响应头)
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    self.fileData = [NSMutableData data];

    NSLog(@"didReceiveResponse");
}

//2.当接受到服务器返回数据的时候调用(会调用多次)
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
   NSLog(@"didReceiveData---%zd",data.length);

    //拼接数据
    [self.fileData appendData:data];
}

//3.当请求失败的时候调用
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"didFailWithError");
}

//4.当请求结束(成功|失败)的时候调用
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"connectionDidFinishLoading");

    //解析数据
    NSLog(@"%@",[[NSString alloc]initWithData:self.fileData encoding:NSUTF8StringEncoding]);
}

POST请求

(1)发送POST请求步骤

a.确定URL路径
b.创建请求对象(可变对象)
c.修改请求对象的方法为POST,设置请求体(Data)
d.发送一个异步请求
e.补充:设置请求超时,处理错误信息,设置请求头(如获取客户端的版本等等,请求头是可设置可不设置的)

(2)相关代码

    //1.确定请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"];
    //2.创建请求对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    //2.1更改请求方法
    request.HTTPMethod = @"POST";
    //2.2设置请求体
    request.HTTPBody = [@"username=520it&pwd=520it" dataUsingEncoding:NSUTF8StringEncoding];
    //2.3请求超时
    request.timeoutInterval = 5;
    //2.4设置请求头
    [request setValue:@"ios 9.0" forHTTPHeaderField:@"User-Agent"];
    //3.发送请求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * __nullable response, NSData * __nullable data, NSError * __nullable connectionError) {
    //4.解析服务器返回的数据
        if (connectionError) {
            NSLog(@"--请求失败-");
        }else
        {
            NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
        }

    }];
时间: 2024-08-08 09:41:30

iOS网络-NSURLConnection简单介绍的相关文章

iOS网络-NSURLSessionTask简单介绍

NSURLSessionTask也可以用来发送网络请求, 相对NSURLConnection, 推荐使用NSURLSessionTask. a.NSURLSessionTask是一个抽象类,本身不能使用,只能使用它的子类 b.NSURLSessionDataTask\NSURLSessionUploadTask\NSURLSessionDownloadTask 基本使用(GET/POST)跟NSURLConnection类似: -(void)get1 { //1.创建请求路径 NSURL *ur

iOS开发——网络OC篇&网络爬虫简单介绍

网络爬虫简单介绍 先来看看网络爬虫的基本原理: 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中.此外,将这些URL放进已抓取URL队列. 4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环. 以下内容均为本人个人

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

Ns3网络仿真软件简单介绍

Ns3网络仿真软件简单介绍 1. 什么是NS-3? NS是一个开源离散事件驱动网络模拟器.官方定义:(fromhttp://www.nsnam.org/) ns-3 is a discrete-event network simulatorfor Internet systems, targeted primarily for research and educational use. ns-3is free software, licensed under the GNU GPLv2 lice

iOS DeepLinkKit使用简单介绍

Update: 2017.04.08 添加了使用iOS DeepLinkKit使用Universal Links的部分 --------------------------------------------------------- 废话不多说,先说做这个的需求: 1.应用中有些社交元素的分享会分享一个链接到facebook, twitter, google+这类的社交媒体上 2.当用户点击某个链接的时候先跳转到自己的页面,然后再传递參数到iOS应用上打开指定的分享数据 思路:iOS提供了Sc

iOS沙盒简单介绍

先简单介绍一下什么是沙盒:你可以简单理解成为一个目录,这个目录的改动不会对操作系统造成任何损失.(这里也有一点点介绍) 看看苹果的沙盒目录: 再附一张苹果官方的图 一个iOS app操作都是在自己的沙盒中进行的. 首先: Deveices,里面是各种的模拟器设备. 然后随便找一个模拟器设备.里面的data是里面的数据.然后Container里面Data中有一个Application就是该设备的安装软件. 我们可以看到里面有好多个(就算我们Reset Content and Settings,也会

网络爬虫简单介绍(python)

一.简介 爬虫就是利用代码大量的将网页前端代码下载下来使用的一种程序,一般来说常见的目的为下: 1.商业分析使用:很多大数据公司都会从利用爬虫来进行数据分析与处理,比如说要了解广州当地二手房的均价走势就可以到房屋中介的网站里去爬取当地房源的价钱除以平方米 2.训练机器:机器学习需要大量的数据,虽然网络上有许多免费的库可以提供学习,不过对于部分机器他们需要的训练资料比较新,所以需要去爬取实时的数据 3.练习爬虫技术:很多网络爬虫其实没有什么商业目的性,只是程序员拿来练习用的 4.其他程序:像是搜索

iOS网络: NSURLConnection进行异步请求

介绍:  iOS 的应用,一般是需要通过网络进行数据的交互的,这样你的应用就成为了联机的应用了. iOS SDK 允许我们向网络发送请求,并且能够很方便的通过 NSURLConnection 这个类 来获取和发送数据,我们可以通过 NSJSONSerialization 对 JSON 进行序列化和反序列化. XML 的解析则使用 NSXMLParser 类.可以通过 Twitter 框架进行 Twitter 进行连接. 一  通过NSURLConnection进行异步下载 1. NSURLCon

IOS网络--NSURLConnection

¥状态栏中旋转加载图标的显示 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; cancel 停止下载 1.将url再次包装成一个一个NSURLRequest对象,可被NSURLConnection使用 1.NSURLRequest * request = [NSURLRequest requestWithURL:url]; 2. NSURLRequestReloadIgnoringLocalCach