首页 > 代码库 > 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