2013年3月12日 星期二

android apps範例_Web Service Client

緣起:
很久以前就有個想法,想要將自己的程式碼無料分享出來,
最近有去上過android apps開發的課,上過課後花了點時間利用課堂教的寫了第二個apps,
在Acer Iconia B1 A71上面測過是OK的,相關程式碼以及開發過程稍微整理一下就寫了這篇blog.
第2次寫blog, 第2次寫android apps, 若有不周,歡迎批評指教, 缺漏的部份日後會慢慢補上.
除了ksoap2.jar檔案以外, 轉貼或引用本篇blog內文章段落&程式碼, 不必交代出處.

過程:
上過課後,開始survey google上面的資料,首先了解甚麼是Web Service, 再來是收集到某網站有架Web Service server, 可以取得WSDL(.xml file), 再來是survey android apps範例(大部分的例子都是server跟client一組的,縱使照他的去寫也無server可測試,架server可是要花時間的,況且也沒WSDL可參照,從他的android code也可猜出WSDL長啥樣子,反正android apps code有參考價值就是了), 再來是寫WS需要SOAP套件,網路上有免費的android SOAP套件(ksoap2),再來是決定架構, 到底是要仿照網路一些java範例(new一個WS proxy的物件開始寫),還是要照現成別人的android apps架構, 當下就決定照別人的android apps架構下去寫, 下一步就是要學會看懂別人提供的WSDL檔案,看懂之後就開始寫程式跟測試了.

Web Service Client:
1.甚麼是WS ? 一言以蔽之, 就是你的程式去call別人寫好的function, 誰寫程式不call function的?差別是這個function存在遠在天邊的某台server上面. 你的程式去call別人,你就是client, 別人提供給你,他就是server. 本範例只示範WS client端的程式.

2.提供WS的server網址(WSDL檔案超連結)如下(這是一個華氏攝氏溫度互轉):
http://www.w3schools.com/webservices/tempconvert.asmx?wsdl

3.android SOAP套件,請到下列網址下載:
http://code.google.com/p/ksoap2-android/
下載後將.jar放在你自己的專案資料夾內,打開eclipse後,滑鼠點選你的專案右鍵,選build path/configure build path, 選Add JARs, 選你剛下載的那個.jar後按OK.

4.如何解讀WSDL檔案? 請參考底下這張圖.
圖中標出URL(就是WSDL檔案的hyperlink),NAMESPACE,METHOD,要傳入的引數都是待會程式中需要用到.
 
5.因為需要上網的功能, 所以在AndroidMainfest.xml內有加入INTERNET permission.
6.android 4.0以後,不允許main thread內有internet行為,所以改用thread寫法來更新view,
7.若WS server是用微軟.net寫的, env.dotNET=true;此行程式碼一定要加上去.
 
所有程式碼下載連結:
 
2014/3/9更新
近日發現server端有問題, 去抓最新的wsdl檔來看(www.w3schools.com/webservices/tempconvert.asmx?wsdl),
發現targetNamespace有更動,將它改成http://www.w3schools.com/webservices/就ok了!

沒有留言:

張貼留言