生活随笔
收集整理的這篇文章主要介紹了
通过IDE生成和手动call调用webservice
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。
通過IDE自動生成的代碼調(diào)用webservice服務(wù)
?
我們的IDE一般來說都是能夠通過各種各樣的工具來支持我們的開發(fā)使我們的開發(fā)變得更加的便捷。對于webservice來說自然也是如此,所以我們可以輕松的調(diào)用webservice插件來進(jìn)行客戶端代碼的生成。在這里我們直接new就可以了
?
把我們本地的WSDL的地址輸入進(jìn)去
?
?
?
直接finish,自動生成了一堆的類和對象
?
?
?
然后我們直接根據(jù)以下的方法就可以測試我們的webservice接口的情況了
?
[java]?view plain?copy
package?localhost.webserviceTest.test;????import?org.apache.axis.AxisFault;????import?localhost.webserviceTest.services.webServiceTest.HellowWorldProxy;??import?localhost.webserviceTest.services.webServiceTest.WebServiceTestSoapBindingStub;????public?class?webClientTest?{??????????????public?static?void?main(String[]?args?){??????????try?{??????????????HellowWorldProxy?pHellowWorldProxy=?new?HellowWorldProxy();??????????????System.out.print(pHellowWorldProxy.test("?zhengfang.sun"));????????????????????}?catch?(Exception?e)?{??????????????//?TODO?Auto-generated?catch?block??????????????e.printStackTrace();??????????}????????????????}??}??
?
結(jié)果如下圖所示
?
?
?
org.apache.axis.client.Call調(diào)用
Webservice接口我們自然可以通過IDE提供的功能進(jìn)行生成,但是有時(shí)候也是會出現(xiàn)意外的,提供webservice的系統(tǒng)或者是服務(wù)方所在的網(wǎng)絡(luò)環(huán)境和調(diào)用端的不連通,沒有辦法通過IDE進(jìn)行生成,這個時(shí)候掌握其本質(zhì)的調(diào)用方法就變得尤為重要
這種方法適用于在能夠看到WSDL或者是能夠知曉服務(wù)方提供的服務(wù)信息的前提下就可以使用。其核心是通過org.apache.axis.client.Call這個類進(jìn)行webservice的調(diào)用。
[java]?view plain?copy
package?localhost.webserviceTest.test;????????import?java.net.MalformedURLException;????import?java.rmi.RemoteException;???????import?javax.xml.namespace.QName;????import?javax.xml.rpc.ServiceException;????import?org.apache.axis.client.Call;????import?org.apache.axis.client.Service;???????public?class?ClientTest?{????????????public?static?void?main(String[]?args)?throws?MalformedURLException,?RemoteException?{????????????????????????Service?service?=?new?Service();????????????try?{??????????????????????????????Call?call?=?(Call)?service.createCall();????????????????//設(shè)置地址??注意這里的地址是附帶WSDL的??????call.setTargetEndpointAddress(new?java.net.URL("http://localhost:8080/webserviceTest/services/webServiceTest?wsdl"));??????????????//設(shè)置要執(zhí)行的方法??????????????????????????????????????命名空間????????????????????????方法名??????call.setOperationName(new?QName("http://localhost:8080/webserviceTest/services/webServiceTest","test"));??????????????//設(shè)置要傳入?yún)?shù),如果沒有要傳入的參數(shù),則不要寫這個??????????????//如果我們只有單個參數(shù)的話這個參數(shù)的名稱其實(shí)可以隨意選取???????call.addParameter("testStr",?org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);????????????????//設(shè)置返回的類型????????call.setReturnType(org.apache.axis.Constants.XSD_STRING);???????????????????????????????String?name?=?"zhengfang.sun1";??????????????//執(zhí)行,調(diào)用webservice???????????????String?result?=?(String)?call.invoke(new?Object[]{name});???????????????System.out.println(result);?????????????????????????}?catch?(ServiceException?e)?{???????????????e.printStackTrace();????????????}????????}????????}???? ?
方法的執(zhí)行結(jié)果
?
總結(jié)
以上是生活随笔為你收集整理的通过IDE生成和手动call调用webservice的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。