•有兩種方法把資料提交給伺服器:get和post
• get
– get
的語義是獲取指定
url上的資源
–將資料按照variable=value的形式,新增到action所指向的url後面,並且兩者使用「?」連線,各個變數之間使用「&」連線
–不安全,因為在傳輸過程中,資料被放在請求的url中
–傳輸的資料量小,這主要是因為受url長度限制 •
post
– post
的語意是對指定資源「追加
/新增」資料
–將資料放在
資料體中,按照變數和值相對應的方式,傳遞到action所指向url
–所有資料對使用者來說不可見
–可以傳輸大量資料,
上傳檔案只能使用
post
ios 網路處理常用類
•nsurl
(位址)
–請求位址 •
nsurlrequest
(請求,
get請求使用)
–儲存需要傳送給web伺服器的全部資料:
•乙個nsurl物件
•快取策略
•等待web伺服器響應的最長時間
•請求頭
•請求體 •
nsmutableurlrequest(可變
請求,post
請求使用)
–nsurlrequest的可修改子類 •
nsurlconnection
(連線)
–負責建立客戶端和web伺服器之間的網路連線、傳送nsurlrequest物件中的資料並收集來自伺服器的響應
nsurlconnectiondatadelegate
的常用**方法//
伺服器開始返回資料
-(void)connection:didreceiveresponse:
// 收到伺服器返回的資料,
本方法會被呼叫多次
- (void)connection:didreceivedata:
// 資料接收完畢
,做資料的最後處理
-(void)connectiondidfinishloading:
// 網路連線錯誤
- (void)connection:didfailwitherror:
// 傳送資料給伺服器,
post
請求使用此方法
- (void)connection:didsendbodydata:totalbyteswritten: totalbyte***pectedtowrite:
post
請求步驟(定義
/啟動connection
部分省略)
get請求操作**
獲得伺服器資料的準備工作
通過nsurlconnectiondatadelegate
**方法接收資料
// 收到伺服器返回資料,本方法會被呼叫多次
- (void)connection:(nsurlconnection*)connection didreceivedata:(nsdata*)data
nslog(@"
收到伺服器返回資料
%@",data);
[_receiveddata
// 資料接收結束
- (void)connectiondidfinishloading:(nsurlconnection*)connection
nsstring*string = [[nsstring
alloc]initwithdata:_
receiveddata
encoding:nsutf8stringencoding];
nslog(@"
接收完畢,返回內容為:
%@",string);
//釋放資料
_receiveddata = nil;
// 網路連線錯誤
- (void)connection:(nsurlconnection*)connection didfailwitherror:(nserror*)error
//取消對
url的編碼即可發生錯誤。
nslog(@"
網路連線錯誤:
%@", error.localizeddescription);
post
請求操作**
// 初始化接收資料
_receiveddata = [nsmutabledata
data];
// 定義
url,字母及數字組成的
url不需要編碼
nsurl *url = [nsurl
urlwithstring:login_url];
// 定義請求
nsmutableurlrequest*request = [nsmutableurlrequest
requestwithurl:url];
// 等待伺服器響應
的最長時間
[request settimeoutinterval:5.0];
// 設定請求方法,大小寫無關
// 生成請求體資料並編碼
nsdata*body = [bodystring datausingencoding:nsutf8stringencoding];
// 設定
請求資料體,
nsmutableurlrequest
會自動在請求頭中加入
// 定義連線
……nsurlconnectiondatadelegate
**方法
// 傳送資料給伺服器,
post
請求使用此方法
- (void)connection:(nsurlconnection*)connection didsendbodydata:(nsinteger)byteswritten totalbyteswritten:(nsinteger)totalbyteswritten totalbyte***pectedtowrite:(nsinteger)totalbyte***pectedtowrite
nslog(@「
傳送資料給伺服器
byteswritten
:%d,
totalbyteswritten
%dtotalbyte***pectedtowrite
%d」, byteswritten, totalbyteswritten, totalbyte***pectedtowrite);
同步請求和非同步請求
•nsurlconnection提供了兩個靜態方法可以直接同步或非同步呼叫nsurlrequest,而
無需通過
nsurlconnectiondatadelegate
獲取資料
•同步請求:
sendsynchronousrequest:request returningresponse:&responseerror:&error
•非同步請求:
sendasynchronousrequest:request queue:[
nsoperationqueue
mainqueue
]completionhandler:^(nsurlresponse*response, nsdata*data, nserror*error)
有關主操作佇列的內容,在多執行緒課程講解
HTTP請求方法 GET POST
http hyper text transfer protocol 超文字傳輸協議。是一種建立在tcp上的無狀態連線,整個基本的工作流程是客戶端傳送乙個http請求,說明客戶端想要訪問的資源和請求的動作,服務端收到請求之後,服務端開始處理請求,並根據請求做出相應的動作訪問伺服器資源,最後通過傳送ht...
請求方法GET POST的幾點
區別 瀏覽器位址呈現形式不同 表面區別 get post get請求格式 get login?username xyz passwd 123456 http 1.1 post請求格式 post login http 1.1 username xyz passwd 123456 需要傳輸大檔案時,使用...
get post請求方法的區別
get和post是http請求的兩種基本方法。get把引數包含在url中,是從伺服器上獲取資料,post通過request body傳遞引數,是向伺服器傳送資料。get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。get請求會被瀏覽器主動抓取 cache 而post不會,除非...