第二篇了.
本篇要講的是資料擷取.
為什麼将資料擷取放在第二篇就講呢?
因為我在看别人教程的時候都是先講控件的屬性,然後怎麼用控件開始.
可是畢竟咱們也是有一定開發經驗的人..是以很自然就想先知道怎麼從網絡上擷取資料(畢竟現在開發的軟體一般都是需要聯網來運作的) 是以如果能在一開始就知道 資料連接配接到底 怎麼實作,到底麻煩不麻煩.那麼最起碼心裡有個底,
換言之,我也可以安心的把軟體做的好點到時候将資料的那部分子產品換成從網絡上擷取就好了.
好了廢話不多說了直接進入正題.(PS:我這邊隻是把我實作資料擷取的方式講一下,因為我自己也不是很深入的研究,是以資料擷取的子產品被我弄的非常簡單....還是那句話希望不要誤人子弟.)
正文:
資料擷取的話 我這邊使用的資料格式是JSON格式的資料 (不知道JSON的請自行百度)
在一開始實作的時候我是先寫個c# 的webservice服務的,然後發現通過我這個方法調用過來之後傳回的資料是
XML格式的..這樣的話,為了獲得裡面的資料我還需要再解析XML一遍.非常的麻煩(苦逼的程式員就是怕麻煩的人物啊...)
然後我這邊就分析了下資料擷取的實作原理...然後就将服務提供換成了 C# 網頁中的 一般處理程式 也就是.ashx檔案
至于.ashx檔案怎麼寫 請在本文備注部分檢視
http://XXXXX.XXXX.XXX/WebServicesForIOS/IOSWebservices.ashx ? 參數....
這個是我們.ashx的位址
{"Result":"True","Data":{"ID":196,"使用者名":"dl","密碼":"dl","姓名":"dl","角色":"dl","是否是管理者":"True"}}
這個是傳回的資料
接下來就直接開始講OC部分的實作吧
首先大家需要建立一個類.然後繼承至NSObject類 就好了
命名的話我是叫 "GetWebInfo"
完成後XCODE會建立兩個檔案 分别是GetWebInfo.h與GetWebInfo.m
首先打開 .h檔案
改成這樣
我這邊定義了一個全局的 定量
一個string類型的變量
一個傳回string 的方法
接下來我來分别講下這三個的作用
首先是定量 WEBADDRESS 該定量的作用就是配置位址.這樣的話 如果我需要通路不同的位址的時候隻要修改一下該檔案就可以了.至于為什麼要這麼做呢?相信大家應該都是有很多測試位址和正式位址的..到時候隻要修改一下前面的網頁連結就可以輕松搞定測試與正式的切換了
然後是parameters 就是參數了 .這邊的參數的話我是用很土的辦法 由大家自己拼接string然後傳遞
大緻的格式就是 Method=方法名&參數1名=參數1&參數2名=參數2 這樣的拼接
這樣的話 我調用不同的方法 隻需要傳遞 對應的方法名以及所需要的參數就可以了 然後他就會通過 dogetWebInfo來擷取資料了.
然後是-(NSString *)dogetWebInfo;
其實講了這麼多 核心的就是dogetWebInfo方法了 請直接看.m檔案
我來細節的解釋下擷取資料的實作
我們這邊需要用的是 NSURL類 首先是定義Nsurl的位址
然後queram 呢就是我們的參數拉
urlRequest 就是傳回類了
然後是定義 他是Post傳輸還是get傳輸再然後setHTTPBody的作用呢就是 設定參數.
result 呢就是傳回的結果 這邊傳回的結果呢是NSData類型的
是以最後呢 需要講result轉化為string類型..就可以獲得我們的資料了.
之後呢我們就可以對擷取過來是json格式的資料進行操作了
當然這邊他目前還是nsstring 格式的 我們還需要轉換成可以使用的格式..但是簡單來講我們已經完成了資料擷取的全部内容了
是不是非常簡單呢?嘿嘿就是這麼簡單!
PS:這邊傳回的資料 呢是 在網頁中打開是什麼 擷取 擷取的就是什麼.
大家都知道 如果我們直接在網頁中通路webservice的時候他是包含xml 的内容的 實際的内容他會放在<string></string>節點當中
也就是這樣分析.是以我才改用.ashx的方法
備注部分:
這部分呢主要是講下.ASHX的簡單實作
建立完.ashx 檔案的話 他回有個預設的方法
然後裡面呢會有以個context 變量
我們就可以直接使用這個變量了
context.Request["變量名"] 這樣呢就是擷取變量
context.Response.Write("資料");//格式我是用string格式的這樣呢就是傳回資料了
也很簡單.大家可以趕緊去試試吧.
全文就這麼多内容了請期待下一篇..下一篇應該會講解下 如何處理擷取過來的nsstring格式的json資料