iOS http网络请求相关知识总结
网络请求上遇到比较大的问题是multipart/form-data的多表单post上传格式。
iOS 的网络请求解决方案主要有四种,NSURLConnect、NSURLSession、 AFNetWorking、MKNetWorkKit四种。
NSURLConnect是一个比较老的网络请求api,可以兼容iOS2.0之后的系统,但请求方式比较灵活,能具备同步与异步请求。
NSURLSession是基于NSURLConnect基础上,开发的网络请求api,能兼容iOS7.0之后的系统。性能上有了较大的优化,特别是后台传输方面的使用更加便捷。
AFNetWorking是非常轻便的网络请求第三方库,其于NSURLConnect、NSURLSession的基础上再封装一层,使调用网络请求更简单,特别是上传文件的表单上的封装。
MKNetWorkKit也是轻便的网络请求第三方库,其效果与AFNetWorking类似,也比较好用,但与AFNetWorking相比,MKNetWorkKit是单独维护的,从版本升级的角度上考虑,AFNetWorking更加适合应用于长久发展的项目中。
本项目主要采取AFNetWorking为主要的网络解决方案,但部分网络请求依然直接采用NSURLConnect或NSURLSession的方式实现,代码风格的统一工作未完成。
Http请求头
当打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器。
http请求头的简单例子:
Accept-Language: zh-cn,zh;q=0.5
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; 域名)
Host: 域名
Connection: Keep-Alive
http请求头的参数
(1)Accept-Language: zh-cn,zh;q=0.5
意思:浏览器支持的语言分别是中文和简体中文,优先支持简体中文。
详解:
Accept-Language表示浏览器所支持的语言类型;
zh-cn表示简体中文;zh 表示中文;
q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。
(2)