IOS網路編程:HTTP

來源:互聯網
上載者:User

HTTP定義了一種在伺服器和用戶端之間傳遞資料的途徑。

URL定義了一種唯一標示資源在網路中位置的途徑。

 

REQUESTS 和 RESPONSES:

用戶端先建立一個TCP串連,然後發送一個請求。伺服器受到請求處理後發送一個響應向用戶端傳遞資料。然後用戶端可以繼續發送請求或者關閉這個TCP串連。

HTTPS:
在TCP串連建立後,發送請求之前,需要建立一個一個SSL會話。

request方法和它們的用途

 

注意:想server發送大量資料需要用POST,因為GET僅支援發送少量資料(8KB)。

 

iOS的NSURLRequest和它的子類NSMutableURLRequest提供了建立HTTP請求的方法。

NSURLResponse 和 它的子類NSHTTPURLResponse 處理返回的資料。

URL:

 

Protocol包括HTTP、FTP和file。

URL編碼:

NSString *urlString = ; 
NSString *encoded =

NSURL用來管理URL。

 

IOS HTTP APIS:

涉及到下面一些類:

NSURL, NSURLRequest, NSURLConnection, 和 NSURLResponse.

1、NSURL

NSURL可以定義本地檔案和網路檔案

NSURL *url = [NSURL urlWithString:@"http://www.google.com"]; 
NSData *data = [NSData dataWithContentsOfURL:url];

NSURL定義了很多訪問器:

 (url.port == nil) { 
  NSLog(

2、NSURLRequest

建立了NSURL後,就可以用NSURLRequest建立請求了:

NSURL *url = [NSURL URLWithString:  (url ==); 

*request = [NSURLRequest requestWithURL:url];

(request ==

NSMutableURLRequest是NSURLRequest 的子類,提供了改變請求的屬性的方法:

NSURL *url = [NSURL urlWithString]; 
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:

如果你要發送一個圖片或者視頻,那麼用需要用NSInputStream,它沒有把資料全部加在到記憶體。

NSMutableURLRequest *request =*inStream =];

 

3、NSURLResponse

 

 

4、NSURLConnection

提供了初始化、開始、和取消一個串連。

發送同步請求:

- (NSArray *) doSyncRequest:(NSString *    NSURL *url =    NSURLRequest *request =    NSHTTPURLResponse   ***data =&&     (error !=     ([response isKindOfClass:[NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse * (httpResponse.statusCode !=     NSDictionary *dictionary =&    NSLog(*entries =    

 

 

Queued Asynchronous Requests:

- () doQueuedRequest:(NSString *)urlString  :()    NSURL *url =    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:     (queue ===^(NSURLResponse *** (error !=                 ([response isKindOfClass:[NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse * (httpResponse.statusCode !=                 NSDictionary *dictionary =&                NSArray *entries =                 ([

 

NSURLConnection start方法和Delegate:

GET:

 NSURL  *url=*request=*connection = [[ NSURLConnection   alloc ]  initWithRequest :request - ()connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *  [activityIndicator startAnimating]; //UIActivityIndicatorView    NSLog(=- ()connection:(NSURLConnection*)connection didReceiveData:(NSData*    [responseData appendData:data]; - ()connection:(NSURLConnection*)connection didFailWithError:(NSError*- ()connectionDidFinishLoading:(NSURLConnection *

   [activityIndicator stopAnimating];

}

POST:

    NSMutableData *data ==    NSURL *url = [NSURL URLWithString:    NSMutableURLRequest *request =    [request setHTTPMethod:    NSString *postData = [[NSString alloc] initWithString: forHTTPHeaderField:    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request =    [connection start];

 非同步請求:
非同步請求需要一個run loop來操作代理對象,GCD和NSOperationQueue預設並沒有run loop,所以如果你想在後台發起一個HTTP請求,必須確保有run loop。

NSURLConnection connection =

上面的代碼是在主線程運行,如果想在其他線程運行,可以在其他線程建立一個run loop,並綁定到connection。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.