1、HTTP协议的概念
· 全称“超文本传输协议”,浏览器和服务器之间的通信规则 ·HTTP协议永远都是客户端发起请求,服务器回送响应。
2、响应包、请求包
· 客户端发送一个HTTP请求,是向服务器提交了一个HTTP请求包
· 服务器收到请求之后,向客户端回应一个HTTP响应包
3、HTTP请求常用方法
· GET:是向服务器索取数据的一种请求方式,所有参数拼凑在URL后面,并且参数之间用&隔开
- 比如http://baidu.com?name=123*pwd=567
- 传递了2个参数给服务器{
name参数:123
pwd参数: 567
}
get方法没有请求体,一般用来查询数据
· POST:是向服务器提交数据的一种请求方式,所有参数都放在请求体中,一般用来修改,增加,删除数据
HTTP请求包的结构由两部分组成:HTTP请求头、HTTP请求体
注意:POST请求方式才有请求体,GET请求只有请求头
运行结果:
· 全称“超文本传输协议”,浏览器和服务器之间的通信规则 ·HTTP协议永远都是客户端发起请求,服务器回送响应。
2、响应包、请求包
· 客户端发送一个HTTP请求,是向服务器提交了一个HTTP请求包
· 服务器收到请求之后,向客户端回应一个HTTP响应包
3、HTTP请求常用方法
· GET:是向服务器索取数据的一种请求方式,所有参数拼凑在URL后面,并且参数之间用&隔开
- 比如http://baidu.com?name=123*pwd=567
- 传递了2个参数给服务器{
name参数:123
pwd参数: 567
}
get方法没有请求体,一般用来查询数据
· POST:是向服务器提交数据的一种请求方式,所有参数都放在请求体中,一般用来修改,增加,删除数据
HTTP请求包的结构由两部分组成:HTTP请求头、HTTP请求体
注意:POST请求方式才有请求体,GET请求只有请求头
GET方法示例代码:
<span style="font-size:14px;"><strong>- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/latest"];
// 创建请求
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
// 创建会话(默认发起的是异步的网络请求)
NSURLSession *session = [NSURLSession sharedSession];
// 任务
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 打印错误
if (error != nil) {
NSLog(@"error = %@",error);
}
// 查看状态
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSInteger statusCode = [httpResponse statusCode];
// 请求头
NSDictionary *head = httpResponse.allHeaderFields;
NSLog(@"%ld",statusCode);
NSLog(@"%@",head);
// 解析json数据
id jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"jsonData = %@",jsonData);
// 显示在UI界面(需要回到主队列)
dispatch_async(dispatch_get_main_queue(), ^{
});
}];
//任务重启
[task resume];
}</strong>
</span>
运行结果部分截图:
POST方法代码示例:
<span style="font-size:14px;"><strong>- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/latest"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.cachePolicy = NSURLRequestUseProtocolCachePolicy;
request.timeoutInterval = 120;
// 设置请求方式(默认为get)必须大写
request.HTTPMethod = @"POST";
// 设置请求头
[request setValue:@"zh-cn" forHTTPHeaderField:@"Accept-Language"];
// 会话
NSURLSession *session = [NSURLSession sharedSession];
// 任务
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 打印错误
if (error != nil) {
NSLog(@"error = %@",error);
}
NSHTTPURLResponse *httpresponse = (NSHTTPURLResponse *)response;
// 查看状态
NSInteger statusCode = httpresponse.statusCode;
// 请求头
NSDictionary *heards = httpresponse.allHeaderFields;
NSLog(@"%ld",statusCode);
NSLog(@"%@",heards);
// 解析json数据
id jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",jsonData);
}];
// 任务重启
[task resume];
}
</strong></span>
运行结果: