• iOS UI高级之网络编程(HTTP协议)


    HTTP协议的概念

    HTTP协议,Hyper Text Transfer Protocol (超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议,HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型

    了解C/S模式

    Client(客户端)和Server(服务器)常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接受客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序

    iOS实现网络编程

    HTTP协议请求如何实现

    网络请求地址对象NSURL的作用及用法

    网络请求对象NSURLRequest、NSMutableURLRequest的作用和用法

    网络链接对象NSURLConnenction的作用及用法

    网路链接协议NSURLConnectionDataDelegate的作用及用法

    网络请求数据信息NSURLResponse的作用及用法

    网络连接中所用到的类

    我们将在后面的学习过程中遇到五个关于网络连接的类分别是:NSURL, NSURLRequest, NSMutableURLRequest, NSURLResponse, NSError.

    NSURL:这个类封装了一个网络路径。

    NSURLRequest:我们将通过这个类设置一些网络的请求信息。

    NSMutableURLRequest:这个类是NSURLRequest的子类,可以设置一些请求参数

    NSURLResponse:这个类可以接受一些从服务器返回的信息

    NSError:这个类包含了我们在网络请求中遇到的错误信息

    NSURL

    url,统一资源定位符,也称为网址,因特网上标准的资源网址

    一个典型的url:http://lily:123456@www.baidu.com/search?hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page

    url的符语法: 协议://授权/路径?查询              注释:url中网址后面的路径服务器中的文件夹 ?后面跟的是参数,多个参数时通过&(and)链接 

    协议:ftp://(文本传输协议) http://(超文本传输协议)

    https://(安全超文本传输协议) file://(本地文件协议)

    URL的请求方式

    网络请求方式有两种:GET 和 POST

    两种方式的相同点是:

    都能给服务器传输数据

    两种请求方式的不同点是:

    1、给服务器传输数据的方式:

      GCT:通过网址字符串

      POST:通过data

    2、传输数据的大小:

      GET:网址字符串最多255字节

      POST:使用NSData,容量超过1G

    3、安全性:

      GET:所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见

      POST:数据被转成NSData(二进制数据),类似于密码的密文输入,无法直接读取

    连接方式

    同步连接:程序容易出现卡死现象

    异步链接:等待数据返回

    异步链接有两种实现方式:

      设置代理,接受数据

      实现block

    同步连接

    同步连接请求可以让你能够从因特网请求数据,一旦发送同步请求后,程序将停止用户交互,直至服务器返回数据完成才可进行下一步操作。

    首先我们建立一个TableViewController视图控制器在方法viewDidLoad里面我们将将网址字符串转成NSURL对象,然后根据NSURL对象创建NSURLRequest请求对象,然后建立同步链接,再通过jeson解析信息

    异步连接

     同步连接会让程序出现“卡死”现象,导致用户交互不友好,而异步链接正好改变了这一弊端,异步连接不会阻塞主线程,而会建立一个新的线程来操作,因此用户在发送出异步请求后依然可以对UI进行操作,程序可以继续进行。

    异步连接(代理)

    设置NSURLConnection代理

    实现相应的代理方法:开始响应接受数据、接收数据 、成功、失败

    创建了URL,指定代理之后,代理中的相应方法实现如下:

    异步连接(block)

     

  • 相关阅读:
    上传文件,经过Zuul,中文文件名乱码解决办法
    Spring Cloud Sleuth进阶实战
    如何在IDEA启动多个Spring Boot工程实例
    深入理解Zuul之源码解析
    深入理解Hystrix之文档翻译
    Spring 之BeanFactory(转)
    spring之BeanFactoryAware接口
    ExecutorService线程池
    POJO
    newInstance 与new的区别
  • 原文地址:https://www.cnblogs.com/496668219long/p/4499413.html
Copyright © 2020-2023  润新知