首页 > 代码库 > MJ - 0919 - 网络编程2

MJ - 0919 - 网络编程2

JSON


格式:{“key”:"value", "key":["value1", "value2", "value3"], "key":{"key":"value", "key":value}}

key必须是字符串

解析方案

第三方框架:JSONKit、SBJson、TouchJSON(性能差)

 

发送request请求,返回json格式的NSData,解析json获得返回结果

 

问题:同步请求无响应会阻塞主线程

解决:使用异步请求,把请求放到子线程执行

 

问题:队列结束后没有更新UI

解决:更新UI的操作必须放在主线程

 

 

视频播放器  - 黑酷


1. 创建tableviewcontroller

2. 创建视频信息的模型VideoModel

3. 创建队列获取网络数据到videos数组属性中

4. 使用SDWebImage框架下载缩略图

 

5. 处理cell的点击事件

使用系统自带的视频控制器(需要导入头文件<MediaPlay/Mediaplay>)

 

XML


解析方案:

苹果原生:

第三方框架

libxml2,大文件

 

》XML解析方式

1. DOM:一次性加载整个xml文件,适用于小文件

2. SAX:单个元素逐步解析,适用于大文件

 

xml解析实例

 

导入GDataXML头文件

step1

step2

step3

 

step4 单独设置非ARC文件

 

》加载整个xml文件

》获取根元素rootElement

》获取指定元素名称的数组

》遍历元素数组,获取元素各项属性,并放到模型数组中存储

》刷新表格

 

 

SAX方式解析XML实例


1 创建xml解析器

2 实现代理,设置当前控制器作为代理

3 实现代理方法

3-1 

 

 

 

》JSON和XML对比:json体积小,解析方便,建议使用

    

HTTP请求方式(get查\post改\option\head\put增\delete删\trace\connect\patch)

1. get(默认)

》将请求参数拼接在请求地址后面

》url最大1KB

 

2. post(信息安全)

》url理论上无限制

 

设置请求方式,注意使用NSMutableURLRquest

request.HTTPMethod = @"POST";

设置请求体

 

请求信息

》请求头:包含客户端的环境藐视、客户端请求的主机地址

host、user-agent、accept

POST /MJServer/login HTTP/1.1

Host: 192.168.15.26:8080

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://192.168.15.26:8080/MJServer/

Cookie: 4qID_2132_saltkey=EPStvBst; 4qID_2132_lastvisit=1411105651; 4qID_2132_sid=NKlxVD; 4qID_2132_lastact=1411109258%09forum.php%09

Connection: keep-alive

》请求行:

》请求体

 

响应信息

》状态行:成功或失败信息200(OK)、400(Bad Request)、404(Not found)、500(Server Error)等

》响应头:服务器信息

》实体内容:具体数据

 

补充


》请求超时设置(默认是60秒)

request.timeoutInterval = 30;

 

》url中不能有中文,需要转码

 

 

》发送复杂参数

1. json

    》使用post

    》设置请求体

    》设置请求头

   

2. 多值参数

使用同一个参数名,多次设置参数值

http://192.168.15.26:8080/MJServer/weather?place=guilin&place=shunde&place=pudong&place=yongzhou&type=XML

 

MJ - 0919 - 网络编程2