# POST簡介
##什么是POST
POST請求是HTTP協(xié)議中的一個(gè)重要組成部分。POST方法一般用來向目的服務(wù)器發(fā)出更新請求漱逸,并附有請求實(shí)體。
## 和GET的區(qū)別
1.GET請求的數(shù)據(jù)會附在URL之后(就是把數(shù)據(jù)放置在HTTP協(xié)議頭中),以?分割URL和傳輸數(shù)據(jù)产镐,參數(shù)之間以&相連倡蝙,如:login.action?name=sean&password=123九串。如果數(shù)據(jù)是英文字母/數(shù)字,原樣發(fā)送寺鸥,如果是空格猪钮,轉(zhuǎn)換為+,如果是中文/其他字符胆建,則直接把字符串用BASE64加密烤低,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進(jìn)制表示的ASCII笆载。
POST把提交的數(shù)據(jù)則放置在是HTTP包的包體中扑馁。
2.POST的安全性要比GET的安全性高。注意:這里所說的安全性和上面GET提到的“安全”不是同個(gè)概念凉驻。上面“安全”的含義僅僅是不作數(shù)據(jù)修改腻要,而這里安全的含義是真正的Security的含義,比如:通過GET提交數(shù)據(jù)涝登,用戶名和密碼將明文出現(xiàn)在URL上雄家,因?yàn)?1)登錄頁面有可能被瀏覽器緩存,(2)其他人查看瀏覽器的歷史紀(jì)錄胀滚,那么別人就可以拿到你的賬號和密碼了趟济,除此之外,使用GET提交數(shù)據(jù)還可能會造成Cross-site request forgery攻擊蛛淋。
總結(jié)一下咙好,Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請求,而Post是向服務(wù)器提交數(shù)據(jù)的一種請求褐荷,在FORM(表單)中勾效,Method默認(rèn)為"GET",實(shí)質(zhì)上,GET和POST只是發(fā)送機(jī)制不同层宫,并不是一個(gè)取一個(gè)發(fā)杨伙!
## 代碼演示
- (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];
//設(shè)置請求對象類型為Post請求
[request setHTTPMethod:@"POST"];
//body體參數(shù)
NSString *bodyStr = @"cacheKey=Recipe.getFindRecipe&sign=&uid=&uuid=02288be08f4b871a69565746255b0de9";
//字符串轉(zhuǎn)data型
NSData *data = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
//設(shè)置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];
}
## 請求數(shù)據(jù)結(jié)果
{
"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;
}
);
}