HTTP的通信过程
1.请求
1>请求行:请求方法 请求路径 HTTP协议版本
2> 请求头:客户端的一些描述信息
*User-Agernt:客户端的环境(软件环境)
3>请求体:POST请求才会有的这个东西
*请求参数,发给服务器的数据
2.响应
1>状态行(响应行):HTTP协议的版本 响应状态嘛 响应状态描述
HTTP/1.1 200 OK
2>响应头:服务器的描述信息
*Content-Type : 服务器返回给客户端的内容类型
*Content - Length : 服务器返回给客户端的内容的长度(比如文件的大小)
3>实体内容(响应体)
*服务器返回给客户端具体的数据,比如文件数据
3.一个HTTP请求的基本要素
1>请求URL : 客户端通过哪个路径找到服务器
2>请求参数 : 客户端发送给服务器的数据
*比如登陆时需要发送的用户和密码
3.返回结果:服务器返回给客户端的数据
*一般是JSON或者XML数据
4.请求是JSON数据时,需要设置请求头数据
设置请求头数据 : 这次请求体数据不再是普通是参数,而是一个JSON数据
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
HTTP的请求方法
1.GET
1>特点:所有请求参数都拼接在URL后面
2>缺点:在URL中暴露了所有的请求数据,不太安全.URL的长度有限制,不能发送太多的参数
3>使用场合:如果仅仅向服务器索要数据,一般用GET请求
4>如何发送一个GET请求: 默认就是GET请求
2.POST
1>特点:把所有的请求参数都放在请求体(HTTPBody)中.理论上讲,发给服务器的数据大小是没有限制
2>使用场合:除开服务器索要数据意外的请求,都可以使用POST请求.
如果发给服务器的数据是一些隐私,敏感的数据,绝对要用POST请求
3>如何发送一个POST请求
// 1.创建一个URL : 请求路径
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/login"];
// 2.创建一个请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
// 设置请求方法
request.HTTPMethod = @"POST";
// 设置请求体 : 请求参数
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", usernameText, pwdText];
// NSString --> NSData
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
注意:设置超时与URL转码
设置超时:request.timeoutInterval = 5;// NSURLRequest是不能设置超时的,因为这个对象是不可变的
URL转码 : URL中不能包含中文,得对中文进行转码(加上一堆的%)