iOS 学习笔记——0003(iOS之HTTP协议网络传输)
2015-10-14 16:03
706 查看
http协议大概解释
http协议(Hypertext Transfer Protocol超文本传输协议,访问的是远程的网络资源,格式是http://)
大概解释,如图
http协议是无状态的协议,什么意思呢,就是服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间
http协议请求,包括请求行,请求头,请求体
响应,包括状态行,响应头,响应体(这边具体内容可以百度)
常见的响应状态码:
http协议中最常用的是get和post请求方法(其他如put,delete等不常用的我也不了解)
get和post请求的区别(最大的区别):
get是在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如http://www.linshao.com/login?username=name&pwd=123&type=JSON
post是发给服务器的参数全部放在请求体中
http协议发送请求iOS实战
首先看下get请求方式,请求xml数据的情况,
思路是这样的:
拿到请求路径url
封装请求对象(这里可以设置请求头或者请求体)
发送同步或者异步请求
废话不多说,一个根据城市名字获取天气情况的例子直接上代码:
下面是post请求方式,请求JSON数据的情况
思路:
拿到请求路径url
封装请求对象,这里用NSMutableURLRequest(是NSURLRequest的子类)
发送同步或异步请求
(TO DO...)这边先提供一个思路,后续会将调试成功的代码发上来
总结:现在大多公司与服务器间的数据传输都用的是HTTP协议,JSON去传输
如果刚好你们也是这样的话,可以自己封装一个类,专门去负责打包JSON,传输JSON,解析JSON,对外使用越简单越好
eg:sendHTTPMessage:(NSString*)message type:(NSString*)type url:(NSString*)url;
http协议(Hypertext Transfer Protocol超文本传输协议,访问的是远程的网络资源,格式是http://)
大概解释,如图
http协议是无状态的协议,什么意思呢,就是服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间
http协议请求,包括请求行,请求头,请求体
响应,包括状态行,响应头,响应体(这边具体内容可以百度)
常见的响应状态码:
http协议中最常用的是get和post请求方法(其他如put,delete等不常用的我也不了解)
get和post请求的区别(最大的区别):
get是在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如http://www.linshao.com/login?username=name&pwd=123&type=JSON
post是发给服务器的参数全部放在请求体中
http协议发送请求iOS实战
首先看下get请求方式,请求xml数据的情况,
思路是这样的:
拿到请求路径url
封装请求对象(这里可以设置请求头或者请求体)
发送同步或者异步请求
废话不多说,一个根据城市名字获取天气情况的例子直接上代码:
//1.拿到url,注意乱码问题的解决,WeatherWebService是自己定义的一个宏 NSString* urlStr = [NSString stringWithFormat:@"%@%@",WeatherWebService,[@"北京" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; //2.封装请求对象,这里没写请求方式,因为默认是get请求 NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]; //3.发送异步请求 NSOperationQueue* operationQueue = [[NSOperationQueue alloc]init]; NSURLConnection sendAsynchronousRequest:request queue:operationQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError){ if (data) {//当有放回数据的时候再赋值 _respData = data; [self performSelectorOnMainThread:@selector(fun) withObject:nil waitUntilDone:nil]; //NSLog(@"%@",[[NSString alloc]initWithData:_respData encoding:NSUTF8StringEncoding]); } }]; #import "GDataXMLNode.h" //谷歌提供的第三方库解析XML GDataXMLDocument* doc = [[GDataXMLDocument alloc]initWithData:_respData options:0 error:nil]; GDataXMLElement *root = doc.rootElement;//获取根节点 NSArray *arr=[root elementsForName:@"string"];
下面是post请求方式,请求JSON数据的情况
思路:
拿到请求路径url
封装请求对象,这里用NSMutableURLRequest(是NSURLRequest的子类)
发送同步或异步请求
(TO DO...)这边先提供一个思路,后续会将调试成功的代码发上来
总结:现在大多公司与服务器间的数据传输都用的是HTTP协议,JSON去传输
如果刚好你们也是这样的话,可以自己封装一个类,专门去负责打包JSON,传输JSON,解析JSON,对外使用越简单越好
eg:sendHTTPMessage:(NSString*)message type:(NSString*)type url:(NSString*)url;
相关文章推荐
- TCP/IP、Http、Socket的区别
- HttpURLConnection的使用(网络通信)
- 网络编程实践陈硕笔记一
- 浅谈HTTP,TCP,UDP
- 微信公众平台支付 该网站暂时无法访问 网络接口可能被某些软件修改 请重置接入点设置后重新加载该网页,微信支付各种坑
- 软测试-计算机组成原理、系统和网络安全机构
- 《深入理解Linux网络技术内幕》阅读笔记(二十九)
- 在java网络编程中实现服务器和客户端一对一的聊天
- Android中间httpclient发送帧get求
- HttpClient异常总结
- 《UNIX网络编程》读书笔记1---简介和TCP/IP
- 一种基于浏览器内核修改的复杂网站layout/渲染bug的HTTP重放调试系统
- http://www.cnblogs.com/AloneSword/p/3821569.html
- 网络编码究极入门贴
- NSURLSession类分析
- IOS Android Tomcat SSL双向认证HTTPS访问
- 检测SDWebImage有没有缓存图片 IOS 获取网络图片大小
- WP开发 - HttpWebRequest的GetResponse或GetRequestStream的超时问题
- OSI模型之网络层概述
- Heritrix3.3.0源码阅读 crawler-beans.cxml中处理器链的配置