ios開發-UI高階 HTTP協議
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>
執行結果:
相關文章
- iOS開發-UI高階 Quartz 2D繪圖iOSUIquartz繪圖
- iOS開發- tableView的協議iOSView協議
- iOS網路基礎 HTTP協議iOSHTTP協議
- HTTP協議學習---(三)進階篇HTTP協議
- iOS開發之VPN協議(理論)iOS協議
- HTTP 協議HTTP協議
- [HTTP協議]HTTP協議
- http協議HTTP協議
- iOS9中HTTP協議的變化iOSHTTP協議
- HTTP協議如何發起請求HTTP協議
- 玩轉iOS開發:iOS 11 新特性《高階拖放》iOS
- RTSP協議、RTMP協議、HTTP協議的區別協議HTTP
- http協議分析HTTP協議
- 理解http協議HTTP協議
- HTTP協議概述HTTP協議
- HTTP 協議類HTTP協議
- HTTP協議(2)HTTP協議
- 小解http協議HTTP協議
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- ios網路協議從http變成httpsiOS協議HTTP
- ios-UI高階 GCD的相關設定iOSUIGC
- HTTP 協議圖解HTTP協議圖解
- 瞭解HTTP協議HTTP協議
- HTTP協議那些事HTTP協議
- HTTP協議簡述HTTP協議
- HTTP 協議簡介HTTP協議
- Http協議簡介HTTP協議
- HTTP2 協議HTTP協議
- 簡述HTTP協議HTTP協議
- HTTP 協議完全解析HTTP協議
- Http協議入門HTTP協議
- HTTP通訊協議HTTP協議
- 淺談HTTP協議HTTP協議
- HTTP 協議入門HTTP協議
- 圖解 HTTP 協議圖解HTTP協議
- http協議內容HTTP協議
- HTTP 協議詳解HTTP協議
- HTTP協議概念篇HTTP協議