简单的POST请求

# POST简介

##什么是POST
POST请求是HTTP协议中的一个重要组成部分。POST方法一般用来向目的服务器发出更新请求,并附有请求实体。
## 和GET的区别
1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=sean&password=123。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
POST把提交的数据则放置在是HTTP包的包体中。
2.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!
## 代码演示
- (IBAction)POST:(UIButton *)sender {
NSString *urlStr = @"http://api.hoto.cn/index.php?appid=4&appkey=573bbd2fbd1a6bac082ff4727d952ba3&appsign=cee6710ae48a3945b398702d8702510a&channel=appstore&deviceid=0f607264fc6318a92b9e13c65db7cd3c%7C552EE383-0FAD-4555-9979-AC38A01C5D6D%7C9C579DCC-7C8F-4E53-AEB6-54527C473309&format=json&loguid=&method=Recipe.getFindRecipe&nonce=1443856978&sessionid=1443856790&signmethod=md5×tamp=1443856978&uuid=02288be08f4b871a69565746255b0de9&v=2&vc=40&vn=v5.1.0";
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//设置请求对象类型为Post请求
[request setHTTPMethod:@"POST"];
//body体参数
NSString *bodyStr = @"cacheKey=Recipe.getFindRecipe&sign=&uid=&uuid=02288be08f4b871a69565746255b0de9";
//字符串转data型
NSData *data = https://www.it610.com/article/[bodyStr dataUsingEncoding:NSUTF8StringEncoding];
//设置body体
[request setHTTPBody:data];
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
//获得session对象
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig];
self.postTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
【简单的POST请求】NSLog(@"====%@",result);
NSLog(@"response====%@%@",response,error);
}];
[self.postTask resume];
}
## 请求数据结果
{
"request_id" = ae35583a9da3c18504f2061488bed7a4;
result ={
list =(
{
ItemType = day;
List =(
{
OpenUrl = "haodourecipe://haodou.com/photolist/?type=1&id=3&pid=2316275";
PhotoCount = 115;
PhotoFixCount = 134;
Pid = 2316275;
ThemeCover = "http://recipe1.hoto.cn/pic/userphoto/f3/57/2316275_478.jpg";
ThemeTitle = "\U665a\U9910\U00b712\U67088\U65e5";
TopicId = 3;
},
{
OpenUrl = "haodourecipe://haodou.com/photolist/?type=1&id=2&pid=2315462";
PhotoCount = 70;
PhotoFixCount = 52;
Pid = 2315462;
ThemeCover = "http://recipe0.hoto.cn/pic/userphoto/c6/54/2315462_478.jpg";
ThemeTitle = "\U5348\U9910\U00b712\U67088\U65e5";
TopicId = 2;
},
{
OpenUrl = "haodourecipe://haodou.com/photolist/?type=1&id=1&pid=2315241";
PhotoCount = 56;
PhotoFixCount = 53;
Pid = 2315241;
ThemeCover = "http://recipe1.hoto.cn/pic/userphoto/e9/53/2315241_478.jpg";
ThemeTitle = "\U65e9\U9910\U00b712\U67088\U65e5";
TopicId = 1;
}
);
}

    推荐阅读