標籤:
資料地址:http://blog.sina.com.cn/s/blog_a30ee5f701016yn3.html
學iphone開發有一段時間了,對於我這個新手來說,學習過程中,遇到不少問題,尤其是webservice的調用一直困擾了很久,趕在光棍前夕之跡,談談個人在webservice方面遇到的問題以及解決方案~~跟大家分享一下,對於那些高手來說可以略過~~
也不知道這是人生中的第幾個光棍節了,沒有妹子,很糾結,沒有遇到對的人,在愛情的等待中漸漸的發黴~~~~~~~~
在這裡也祝單身的男銀、女銀們,在光棍節脫"光"~~~~廢話不多說~~切入正題
一、簡述
要調用webservice你想到的是什嗎?
(1)寫一個調用webservice的類(可以自已寫,也可以下載第三方的類庫)
(2)對webservice返回的xml解析(ios內建的xml解析真的很煩)
我在網上度娘了很網,都是看到有些人,要麼只提供webservice的類,簡單的說明一下,對於返回的資料xml,一字不提~~~用起他們寫的類來,真的很冒煙啊~~~~,網上找到的一些答案,我覺得很奇怪,大牛們經常會寫一句不明不白的話,要寫就寫清楚,否則乾脆不要寫~~~讓人希望又失望~~我不覺得這樣有多牛B。。。反而我更喜歡把複雜的事件簡單化~~~
我個人在調用webservice時遇到幾個問題:
a.webservice的命名空間問題?
webservice預設的命名空間是:http://tempuri.org/
我剛開始用得好好的,後來報soapAction不識別http://tempuri.org/~~~~那天花了一上午才找出這個錯,原來有人改動了webservice的預設命名空間~~~我去你大爺的,改了命名空間,也不通知我,害我瞎折騰~~
b.xml如何解析問題?
本來是想用ios內建的類去解析xml的,網上查了一下,看別人寫了一大片,腦門一片大汗,滿臉黑線~~~,後來我用的是google寫的GDataXML這個類庫,還不錯~~~,不過對於那些xml有命名空間的如何讀取,各種罈子去提問,至今還沒有人正確解答我~~~難道天朝就沒有人知道嗎?我失望至極,後來還是有如神助般醍醐灌頂~~~自已解決了,阿門~~~~
c.非同步呼叫時發生400錯誤?
這個問題搞得我,頭腦出現亂碼,神經也被打茄了,你們猜這是啥原因~~~~
soap原本要傳遞的資訊是這樣:
<a>XXX</a><b>XXXX</b>
我把它傳遞參數顛倒過來了,變成這樣:
<b>XXX</b><a>XXX</a>
發現問題後,我傻楞般的笑了~~~~
二、類的簡要說明
(1)webservice(一個是使用NSURLConnection寫的類,還有一個是ASIHttpRequest寫的webservice調用類)
a.同步調用
b.非同步呼叫
c.返回資料的處理
soap調用返回的資料經常放在:<webservice方法名Result>XXX</webservice方法名Result>中,我在webservice調用中已經直接提取出來了~~~提取出來的內容還是一個xml,這段內容的處理,我單獨寫在xml解析類裡面
(2)xml解析類
1.讀取<方法名Result>XXX</方法名Result>的內容
2.遍曆xml的所有內容返回數組
三、使用配置
(1)使用NSURLConnection寫的webservice調用類,類名叫:WebServices.h
包含的檔案如下:
a.AppConfigure.h檔案的配置:
b.google GDataXml配置如下:
step1.先添加libxml2.dylib類庫,不要告訴我這個都不會,拉去面壁~~~
step2.操作如所示
(2)藉助ASIHttpRequest寫的webservice調用類,類名叫:ServiceHelper.h
跟(1)的配置一樣,這裡就不再重複說明,ASIHttpRequest要多添加幾個類庫,如所示
四、檔案下載
(1)NSURLConnection類寫的webservice調用類的所有檔案下載
http://dl.vmall.com/c0cld6ey99 [註:請下載demo裡面的最新版本,有調整]
(2)ASIHttpRequest類寫的webservice調用類的所有檔案下載
http://dl.vmall.com/c0gx4evjva [註:請下載demo裡面的最新版本,有調整]
五、demo下載
demo:http://dl.vmall.com/c016bva6aw最後祝大家~~~~光棍快樂~~~~~努力脫光~~~~~~~~~~~~~~~~
ios 調用webservice整理