NSURLRequest


  • NSURLRequest封装了一次网络请求所需要的数据,主要封装了以下信息:

    • 请求路径(URL)
    • 请求方法(GET或POST)
    • 请求头
    • 请求体
    • 超时参数
  • NSURLRequest与其子类NSMutableURLRequest

    • NSURLRequest的所有的请求信息拼接在请求路径(URL)的后面
    • NSMutableURLRequest的请求路径与其他的请求信息分开,其他请求信息通过对应的Key对请求对象进行设置
    • NSURLRequest通常用于GET请求
    • NSMutableURLRequest通常用于POST请求
  • NSURLRequest封装一次网络请求的的步骤

    //1.创建请求路径
    NSString *strURL = [NSString stringWithFormat:@"(此处为URL)/login?username=%@&pwd=%@", @"用户名", @"密码"];
    NSURL *url = [NSURL URLWithString:];
    //2.根据请求路径封装请求
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
  • NSMutableURLRequest封装一次网络请求的的步骤

    //1.创建请求路径
    NSURL *url = [NSURL URLWithString:@"(此处为URL)/login"];
    //2.创建请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    //3.设置请求方法
    request.HTTPMethod = @"POST";
    //4.设置请求参数
    request.HTTPBody = [@"username="用户名"&pwd="密码" dataUsingEncoding:NSUTF8StringEncoding];
    //5.设置超时
    request.timeoutInterval = 5;

NSURLConnection


  • NSURLConnection发送请求的步骤

    • 创建请求路径(NSURL)
    • 将请求路径封装成请求对象(NSURLRequest),设置其他请求参数
    • 使用NSURLConnection发送同步/异步请求
  • NSURLConnection的代理

    • NSURLConnectionDelegate

      - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
      /**
      *遇到错误的时候调用,请求终止
      */
    • NSURLConnectionDataDelegate

      - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
      /**
      *接收到服务器响应的时候调用
      *response的中包含了服务器的响应信息,比较有价值是此次请求的数据的总长度
      */
      - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
      /**
      *接收到服务器的数据的时候调用,若数据较多会多次调用
      *通常在该方法中对服务器返回的数据进行存储
      *也可以在该方法中计算下载进度
      */
      - (void)connectionDidFinishLoading:(NSURLConnection *)connection
      /**
      *数据加载完毕的时候调用
      */
    • NSURLConnectionDownloadDelegate

      - (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes
      /**
      *每次向沙盒中写文件都会调用该方法
      */
      - (void)connectionDidResumeDownloading:(NSURLConnection *)connection totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes
      /**
      *该方法是支持断点下载的核心
      */
      - (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL
      /**
      *由于:下载的文件保存在tmp文件夹中,该文件夹中的数据会被系统定时删除
      *所以该方法必须实现,用于将改变数据的存储位置
      */
  • NSURLConnection的请求方式

    • 同步请求(线程会被阻塞)

      NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
      /**
      *data:服务器返回的数据,即请求的数据
      *request:请求请求对象
      *response:服务器的响应数据
      *error:错误信息
      */
    • 异步请求

      //方法一(block)
      [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      /**
      *请求完成回调的block,参数的含义与铜鼓请求相同
      */
      }];
      //方法二(代理)
      [NSURLConnection connectionWithRequest:request delegate:self]
      /**
      *自动发送请求
      */
      NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
      /**
      *需要手动发送请求
      */

URL中的中文处理


  • URL中的中文通要进行处理,通常使用UTF-8编码

    //进行如下转码
    [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

iOS网络-01-NSURLRequest与NSURLConnection的更多相关文章

  1. iOS网络学习之“远离NSURLConnection 走进NSURLSession”

    目前,在iOS的开发中,NURLConnection已经成为了过去式,现在的NSURLConnection已经deprected(iOS7之后),取而代之的是NSURLSession.而且AFNetw ...

  2. iOS网络1——NSURLConnection使用详解

    原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...

  3. iOS网络NSURLConnection使用详解

    一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetworkin ...

  4. ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  5. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  6. IOS 网络请求

    技术交流新QQ群:414971585 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST.今天来看 ...

  7. IOS 网络请求方式

    iOS开发中的网络请求   今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异 ...

  8. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

  9. ios网络学习------6 json格式数据的请求处理

    ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...

  10. iOS网络相关零散知识总结

    iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径   ...

随机推荐

  1. Mina、Netty、Twisted一起学(四):定制自己的协议

    在前面的博文中,介绍一些消息分割的方案,以及MINA.Netty.Twisted针对这些方案提供的相关API.例如MINA的TextLineCodecFactory.PrefixedStringCod ...

  2. AEM - Adobe CMS 扒坑记之始

    AEM是Adobe公司所出的商业内容管理系统,全称阿豆比体验管理系统(Adobe Experience Manager),其前身叫CQ,分别有CQ5 CQ6两个大版本.它提供了整套的网站内容管理系统解 ...

  3. [OpenCV] Image Processing - Fuzzy Set

    使用模糊技术进行 (灰度变换Grayscale Transform) 和 (空间滤波Spatial Filtering) 模糊集合为处理不严密信息提供了一种形式. 首先,需要将输入量折算为隶属度,这个 ...

  4. .NET通用开发框架

    在开源中国社区,简单整理了下比较好的.NET通用开发框架.一个好的通用框架大概包括:开源.扩展性好.灵活性好.复用性好.维护性好.易测试.易发布.易部署.快速业务搭建(或业务集成).通用性强.参考资料 ...

  5. OpenCV开发环境配置-Windows/MinGW/Clion/CMake

    临时更换成了TDM-GCC,和mingw类似,这里只是声明一下. 由于opencv下载下来的.exe安装包实际上是没有mingw(gcc)匹配的/动静态库,因此这些东西需要我们自己使用mingw编译. ...

  6. js页面跳转参考代码大全

    整理一下JS页面跳转参考代码 第一种:     <script language=/"javascript/" type=/"text/javascript/&qu ...

  7. KTV点歌系统

    经过十多天的艰苦奋战,MyKTV点歌系统终于成型,从刚开始接到项目的茫然,到完成项目时的喜悦,整个过程的艰辛和付出只有自己知道.虽然这个项目还有许多需要完善的地方,譬如添加歌词信息,实现窗体的美化等, ...

  8. csharp: Speech

    Speech SDK 5.1https://www.microsoft.com/en-us/download/details.aspx?id=10121 detects mobile devices ...

  9. Discuz!X3解读之类引入机制及目录结构

    实例: - /source/class/table/table_forum_faq.php - /source/class/model/model_forum_post.php - /source/p ...

  10. SpringMvc+Mybatis 框架搭建

    本文承接上一篇[idea使用maven搭建springmvc] 开篇:在main/resources下新建dbconfig.properties.spring.xml.spring-mybatis.x ...