ios網路編程(入門層級)-- 基礎知識

來源:互聯網
上載者:User

標籤:

在學習ios的過程中,停留在UI控制項很長時間,現在正在逐步的接觸當中!!!!!!在這個過程中,小編學到了一些關於網路編程知識,並且有感而發,在此分享一下:

關於網路請求的重要性我想不用多說了吧!!!對於移動用戶端來說,網路的重要性不言而喻,常見的網路請求有GET, POST,今天來看一下兩種網路請求的實現方式。

第一部分   小編的理解

一、兩種網路請求--POST請求與GET請求的異同(這裡小編只討論的是非同步連結)

GET的語義是擷取指定URL上的資源,將資料按照Variable = Value的形式,添加到action所指向的URL後面,並且兩者使用"?"串連,各個變數之間使用"&"串連。

POST的文法是指定資源“追加/添加”資源,將資料放在資料體上,按照變數和值相對應的方式,傳遞到action所指向的URL。

1. GET請求的介面會包含參數部分,參數會作為網址的一部分,伺服器位址與參數之間通過 ? 來間隔。POST請求會將伺服器位址與參數分開,請求介面中只有伺服器位址,而參數會作為請求的一部分,提交後台伺服器。

2. GET請求參數會出現在介面中,不安全;而POST請求相對安全,所有資料對使用者不可見。

3.GET傳輸的資料量小,主要受URL長度限制;而POST可大量傳輸資料,上傳檔案只能使用POST。

4.雖然GET請求和POST請求都可以用來請求和提交資料,但是一般的GET多用於從後台請求資料,POST多用於向後台提交資料。

二、 網路請求的步驟
 1. 確定地址NSURL
 2. 建立請求NSURLRequest
 3. 建立並啟動串連NSURLConnection
     等待網路處理~~~~
 4. 通過代理方法處理網路請求
    遵守協議:NSURLConnectionDataDelegate


 三、 網路代理程式方法
 1. 接收到伺服器的響應,伺服器要傳資料,用戶端做接收準備
 2. 接收伺服器傳輸的資料,可能會多次執行
 3. 接收資料完成,做後續處理
 4. 伺服器請求失敗,原因很多(網路環境等等)
 5. 向伺服器發送資料,此方法僅適用於POST,尤其上傳檔案


 四、 GET方法
    在NSURL中,指定參數(如果有,也可以不指定參數),例如:http://www.baidu.com


 五、 POST方法
    定義一個可變的URLMutableRequest
    1) 時間長度
        [request setTimeoutInterval:2.0f];
    2) 請求方式(預設是GET)
        [request setHTTPMethod:@"POST"];
    3)  資料體
        NSData *body = [string dataUsingEncoding:NSUTF8StringEncoding];
        [request setHTTPBody:body];
 
 六、 同步方法——必須要某個網路請求完成後,才能後續執行,例如網銀登入
    看到方法參數中包含__autoreleasing字樣,在定義的對象名前面加上“&”
    NSURLResponse *response = nil;
    NSError *error = nil;
    // 同步操作沒有完成,後面的代碼不會執行
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    1> 接收到資料,表示工作正常
    2> 沒有接收到資料,但是error為nil,表示接收到空資料
       通常伺服器沒有對該請求做任何響應
    3> error不為空白,表示請求出錯

 七、 非同步方法呼叫
     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *reponse, NSData *data, NSError *error) {
 
        // 請求完成後的處理
     }];
 
    非同步方法呼叫不用等待網路請求結束

 

第二部分   小編的部分demo

 

 1 // 1. 確定地址NSURL 2     NSString *urlString = [NSString stringWithFormat:@"http://XXXXXXX.php?XXXX=%@&XXXX=%@", XXX, XXX; 3     urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 4     NSURL *url = [NSURL URLWithString:urlString]; 5     // 2. 建立請求NSURLRequest 6     NSURLRequest *request = [NSURLRequest requestWithURL:url]; 7     // 3. 建立並啟動串連NSURLConnection 8     NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self]; 9     // 啟動串連,非同步串連請求10     [conn start];11     // 伺服器通知準備,準備中轉資料12     self.serverData = [NSMutableData data];
GET方法
 1 // 1. 確定地址NSURL 2     NSString *urlString = [NSString stringWithFormat:@"http://XXXXX.php"]; 3     NSURL *url = [NSURL URLWithString:urlString]; 4     // 2. 建立請求NSURLRequest(POST) 5     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 6     // 1) 請求方式 7     [request setHTTPMethod:@"POST"]; 8     // 2) 資料體 9     // 因為dataUsingEncoding已經實現了轉碼10     NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@", userName, pwd];11     NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];12     [request setHTTPBody:body];13     // 3. 建立並啟動串連NSURLConnection14     NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];15     // 啟動串連,非同步串連請求16     [conn start];17     // 伺服器通知準備,準備中轉資料18     self.serverData = [NSMutableData data];
POST方法
1 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{}2 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{}3 - (void)connectionDidFinishLoading:(NSURLConnection *)connection{}4 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{}5 - (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite6 {}
網路代理程式方法

 

小編能力有限,希望大牛來指點,不勝感激!!!!!!

ios網路編程(入門層級)-- 基礎知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.