ios sdk為http請求提供了同步和異步請求兩種不同的api,而且可以使用get或post等請求方法。我們先了解其中最為簡單的同步get方法請求。
為了學習這些api的使用mynotes“備忘錄”應用執行個體,資料來源于伺服器端,而不是本地的notes.xml(或notes.json)檔案。
首先實作查詢業務,查詢業務請求可以在主視圖控制器masterviewcontroller類中實作,其中masterviewcontroller.h代碼如下:
其中引入頭檔案nsstring+urlencoding.h檔案是在程式中需要對url進行編碼處理。引入頭檔案nsnumber+message.h檔案是處理把伺服器傳回消息代碼轉換為使用者能看懂的消息。masterviewcontroller.m中的主要代碼如下:
此外,我們在前文中還提到了一個分類nsstring (urlencoding),它的作用是對url編碼和解碼,它的代碼如下:
第①行代碼cfurlcreatestringbyaddingpercentescape函數是core foundation架構提供的c函數,可以把内容轉換成為url編碼。第②行參數指定了将本身為非法url字元不進行編碼的字元集合,例如:“!*()”等符号。第③行參數是将本身為合法url字元需要進行編碼的字元集合。
第③行代碼cfurlcreatestringbyreplacingpercentescapesusingencoding函數是core foundation架構提供的c函數,它與上面cfurlcreatestringbyaddingpercentescape函數截然相反,是進行url解碼的。第④行的參數指定不進行解碼的字元集。
foundation架構也提供了基于objective-c的方法進行url編碼和解碼,與cfurlcreatestringbyaddingpercentescape函數對應的nsstring方法是stringbyaddingpercentescapesusingencoding。與cfurlcreatestringbyreplacingpercentescapesusingencoding函數對應的nsstring方法是stringbyreplacingpercentescapesusingencoding:,由于這些方法不能自定義是否要編碼和解碼的字元集,是以沒有上面的函數靈活。