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。