美文网首页网络专场
简单的POST请求

简单的POST请求

作者: 于是有了涛 | 来源:发表于2015-12-16 18:22 被阅读1536次

# 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 = [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];

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;

}

);

}

相关文章

网友评论

本文标题:简单的POST请求

本文链接:https://www.haomeiwen.com/subject/hoxlhttx.html