网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记...
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
網(wǎng)絡(luò)請求的基本知識?? 我們網(wǎng)絡(luò)請求用的是HTTP請求
Http請求格式:請求的方法,請求頭,請求正文
Http請求的Request fields:請求的頭部,以及被請求頭部的一些設(shè)置
Http請求的Response fields:請求的回復(fù)頭,通過回復(fù)頭可以了解服務(wù)器給我們的一些狀態(tài)信息。
項目源碼:鏈接: http://pan.baidu.com/s/1i37yGzN 密碼: kw6s
獲取這個源碼后,解壓后直接拖拽進新建的Single View工程: 然后在ViewController.m文件中import "AFNetworking.h",接著在Network.h找到GET請求: 按cmd結(jié)合鼠標(biāo)點擊"GET"就可以進入Networking.m的GET的具體實現(xiàn): 然后把這個GET方法中實現(xiàn)的部分 復(fù)制 ,因為我們需要這些代碼里的一些參數(shù)。復(fù)制到ViewController.h的viewDidLoad方法里: 然后刪除不需要的代碼: 添加網(wǎng)址和修改了一點點代碼: 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // 兩個網(wǎng)址: 4 // http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10 5 6 // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg 7 8 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 9 10 // 設(shè)置回復(fù)內(nèi)容信息 11 manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 12 13 AFHTTPRequestOperation *httpOperation = [manager GET:@"" 14 parameters:parameters 15 success:^(AFHTTPRequestOperation *operation, id responseObject) { 16 17 } 18 failure:^(AFHTTPRequestOperation *operation, NSError *error) { 19 20 }]; 21 22 } viewDidLoad再修改了一點代碼:
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // 兩個網(wǎng)址: 4 // http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10 5 6 // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg 7 8 NSString* urlStr = @"http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10"; 9 10 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 11 12 // 設(shè)置回復(fù)內(nèi)容信息 13 manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 14 15 [manager GET:urlStr 16 parameters:nil 17 success:^(AFHTTPRequestOperation *operation, id responseObject) { 18 NSLog(@"%@",responseObject);//查看回復(fù)的信息 19 } 20 failure:^(AFHTTPRequestOperation *operation, NSError *error) { 21 NSLog(@"%@",error);//以及查看錯誤信息 22 }]; 23 } 這個就是用AFNeworking寫出來的最簡單的GET請求運行之后就能打印出網(wǎng)頁數(shù)據(jù)。
?經(jīng)過一個簡單的實例后,講講HTTP的請求格式:
//? = HTTP請求格式 =
//? ------------------------------
//? * 請求方法 (GET、POST等)?????? *
//? * 請求頭?? (HttpHeaderFields) *
//? * 請求正文 (數(shù)據(jù))????????????? *
//? ------------------------------
首先需要知道的是請求方法,有很多請求方法,其中最常用的是GET、POST方法,上面的實例使用的是GET請求,如果改為POST請求:
其它和GET請求一樣:
然后運行就同樣可以有數(shù)據(jù)結(jié)果。同時說明,那個網(wǎng)站即支持GET請求,也支持POST請求。
好,上面講的就是請求的方法,下面講講請求頭是什么?
我們發(fā)送請求的時候,服務(wù)器怎么知道請求的設(shè)備是蘋果手機還是安卓手機,其實在發(fā)送給服務(wù)器的包頭信息,就自動的把我門的設(shè)備信息寫進去了。請看上面圖里的"User-Agent"的信息,它就是我的模擬器設(shè)備的信息。這個信息也是可以自己修改的。這個修改到后面會講到。 關(guān)于頭部信息,我們可以 通過 維基百科 了解,網(wǎng)址是: https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 對照: Accept-Language用的是en英語,我們代碼的包頭請求信息還包括 zh中文 。 這個關(guān)系到用戶的信息。 上面就是請求頭部的信息,下面講講服務(wù)器返回給我們的狀態(tài)信息: 在那個維基百科的網(wǎng)頁里也是有相關(guān)的Response fields列表的: 這些很多信息可以參考維基百科的這個網(wǎng)址進行參考,從而可以了解所請求的服務(wù)器的頭部的信息。而且其中已經(jīng)顯示了這個網(wǎng)址是可以進行GET和POST請求: 通過這個請求頭部信息,可以幫助我們 理解 為什么 我們請求不成功。 最后講講請求的正文: 我們怎么知道請求的正文是什么呢?請求的正文就是我們需要攜帶的數(shù)據(jù): 只這里我們只需要看這行代碼: 注意 ? 前面的就是網(wǎng)址,而 ? 后面的是請求攜帶的參數(shù),這些參數(shù)就是正文。然后我們把這部分正文 寫進 代碼 中,然后刪掉urlStr中的這部分正文:最后顯示的是 cod=404表示出錯了,然后我們把它改為GET請求,然后就成功了。
說明這個網(wǎng)址雖然 包頭 信息告訴我們可以用GET和POST請求,但是通過POST給我們返回的是404的錯誤信息。
?
?
以上上面講到的三點基礎(chǔ)知識點 需要熟悉。
轉(zhuǎn)載于:https://my.oschina.net/u/2363463/blog/635655
總結(jié)
以上是生活随笔為你收集整理的网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android EditText的设置
- 下一篇: 数据库使用情景分析