當你打開你手機上新浪微博應用或者知乎應用是,你是否會去想這些顯示在手機上的圖片和數據時從哪裡來的?又是通過怎樣的方法實現的?好,那麼接下來就介紹是如何實現的,過程又是怎麼樣的。
當我們瀏覽著關註或者好友的微博時,那些圖片和數據不是憑空出現的,而是通過你的客戶端向服務器請求後由新浪微博的服務器返回本地所獲得,通過數據的解析就能夠在客戶端上進行顯示,甚至是操作。而這些,就是我們通常所說的 Web Service。Web Service
技術是一種通過 Web 協議提供服務,保證不同平臺的應用服務可以互操作,為客戶端應用提供不同的服務。目前主流的 Web Service 技術有三種:REST、SOAP 和 XML-RPC。現在主要介紹的是 REST Web Service。
REST 被翻譯為“表征狀態轉移”,“表征”是客戶端看到的頁面,頁面的跳轉就是狀態的轉移,客戶端通過請求 URI 獲得要顯示的頁面。REST 通常是基於 HTTP、URI 和 XML 以及 HTML 等這些現有的協議和標準。
REST Web Service 是一個使用 HTTP 並遵循 REST 原則的 Web Service。請求 Web Service 使用 URI 定位資源。與 Web Service 的數據交換格式使用JSON 和 XML 等非常靈活。Web Service 所支持的 HTTP 請求方法,包括 POST、GET、PUT或DELETE 等。
同步 GET 方法實現的請求:
上一篇關於 JSON 是屬於本地解析,現在是從服務器請求回返回數據進行解析,接下來看一下 Web Service 請求的主要方法。
-(void)startRequest { NSString *strURL = [[NSString alloc] initWithFormat: @"請求的服務器地址"]; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSLog(@"請求完成..."); NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict]; }
initWithFormat:方法指定請求的 URL ,這是 URL 的所指向的 Web Service。下一行代碼是使用上面的 strURL 字符串創建 NSURL 對象,參數是[strURL URLEncodedString],strURL 字符串又調用瞭 URLEncodedString 方法將字符串轉換為 URL 字符串,在
Internet 傳輸的時候 URL 中不能有中文等特殊字符出現。使用該方法就是把這些字符轉換為有百分號的 URL 編碼(“<”符號的 URL 編碼是 “%3C”)。