最近做畢業設計,一個團體項目。
我做的是關於系統構架方面的。簡單點說就是.Net寫的一個WCF服務,而訪問服務的是java客戶端或者說是android客戶端。
而我的WCF服務配置成wsHttpBinding+certificate證書加密+自定義的用戶名密碼檢驗功能。在服務的訪問上用了https協議,個人也沒做過java平臺和.Net Web Service的整合。而且https無疑增加了這個難度。
所以剛開始的想法是通過asp.net網頁來訪問服務,再利用網頁來給java,android返回xml。這樣利用http避免了平臺的不兼容性。
缺點是各種業務的增加刪除不緊要在Web Service中增加,還要在網頁中增加。
而後來由於另外幾個同學遲遲沒有開始做應用端,導致業務無法預料,時間越脫越長。
個人覺得時間可能有點緊,就想把框架簡單化,直接讓java端和andriod客戶端調用WCF服務。
於是清明放假這幾天改造了一下程序框架,網絡上參考了各種文章,終於調試成功了。
廢話不說了,看代碼。
首先,最簡單的服務,沒有certificate,沒有自定義的用戶名密碼檢驗,只有wsHttpBinding。
WCF服務配置程序如下:
java客戶端調用程序:(用axis2-1.4.1生成,生成方法cmd下 axis2的bin目錄下 wsdl2java -uri http://localhost:8889/test?wsdl)
結果調用失敗,一直是什麼read time out,超時。網查查閱資料,說這麼設置就可以了。
於是設置,結果還是超時。繼續找資料。發現都是說超時。當時那個崩潰啊~~好在翻了10頁google,終於找到一篇說是java不支持wshttpbinding協議。因爲wshttpbinding是微軟在SOAP1.0基礎上改進過的,不是通用的綁定協議。這裏又補充了下理論知識,呵呵~~於是改爲basicHttpBinding。
WCF服務配置(basicHttpBinding)
然後重新用axis2 生成客戶端代理。調用代碼,果然成功。調用代碼不變。
調用結果圖:
下面是axis2生成的客戶端代理結構圖。
好了,今天就先調用成功。要下班了。明天在進一步加各種功能。