java調用webservice接口(.asmx)
該系統提供了webservice接口。現在把記錄一下,方便自己以後用,說不定也能幫到正在看這篇文檔的你。
首先需要確認,我這邊寫的是java後臺直接調用webservice接口,並且接口後綴爲asmx。
下面直接上代碼:
public static void main(String[] args){
String url <span class="token operator">=</span> <span class="token string">"http://192.168.7.2:8000/Webservice1.asmx"</span><span class="token punctuation">;</span><span class="token comment">// 提供接口的地址</span> String soapaction <span class="token operator">=</span> <span class="token string">"http://tempuri.org/"</span><span class="token punctuation">;</span> <span class="token comment">// 域名,這是在server定義的--不知道的可以問接口提供方,他們一併提供這個</span> String pageSize <span class="token operator">=</span> <span class="token string">"5"</span><span class="token punctuation">;</span> String pageindex <span class="token operator">=</span> <span class="token string">"1"</span><span class="token punctuation">;</span> Service service <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Service</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">try</span><span class="token punctuation">{</span> Call call <span class="token operator">=</span> <span class="token punctuation">(</span>Call<span class="token punctuation">)</span> service<span class="token punctuation">.</span><span class="token function">createCall</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> call<span class="token punctuation">.</span><span class="token function">setTargetEndpointAddress</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span><span class="token punctuation">;</span> call<span class="token punctuation">.</span><span class="token function">setOperationName</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">QName</span><span class="token punctuation">(</span>soapaction<span class="token punctuation">,</span> <span class="token string">"GetPatyOrganization"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 設置要調用哪個方法</span> call<span class="token punctuation">.</span><span class="token function">addParameter</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">QName</span><span class="token punctuation">(</span>soapaction<span class="token punctuation">,</span> <span class="token string">"pageSize"</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token comment">// 設置要傳遞的參數--要和接口方提供的參數名一致</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>axis<span class="token punctuation">.</span>encoding<span class="token punctuation">.</span>XMLType<span class="token punctuation">.</span><span class="token constant">XSD_STRING</span><span class="token punctuation">,</span> javax<span class="token punctuation">.</span>xml<span class="token punctuation">.</span>rpc<span class="token punctuation">.</span>ParameterMode<span class="token punctuation">.</span><span class="token constant">IN</span><span class="token punctuation">)</span><span class="token punctuation">;</span> call<span class="token punctuation">.</span><span class="token function">addParameter</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">QName</span><span class="token punctuation">(</span>soapaction<span class="token punctuation">,</span> <span class="token string">"pageindex"</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token comment">// 設置要傳遞的參數</span> org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>axis<span class="token punctuation">.</span>encoding<span class="token punctuation">.</span>XMLType<span class="token punctuation">.</span><span class="token constant">XSD_STRING</span><span class="token punctuation">,</span> javax<span class="token punctuation">.</span>xml<span class="token punctuation">.</span>rpc<span class="token punctuation">.</span>ParameterMode<span class="token punctuation">.</span><span class="token constant">IN</span><span class="token punctuation">)</span><span class="token punctuation">;</span> call<span class="token punctuation">.</span><span class="token function">setReturnType</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">QName</span><span class="token punctuation">(</span>soapaction<span class="token punctuation">,</span> <span class="token string">"GetPatyOrganization"</span><span class="token punctuation">)</span><span class="token punctuation">,</span> String<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 要返回的數據類型(自定義類型,我這邊接口提供方給我返回的是json字符串,所以我用string類型接收。這個地方一定要設置好,不然各種報錯很崩潰)</span> call<span class="token punctuation">.</span><span class="token function">setUseSOAPAction</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> call<span class="token punctuation">.</span><span class="token function">setSOAPActionURI</span><span class="token punctuation">(</span>soapaction <span class="token operator">+</span> <span class="token string">"GetPatyOrganization"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> String v <span class="token operator">=</span> <span class="token punctuation">(</span>String<span class="token punctuation">)</span> call<span class="token punctuation">.</span><span class="token function">invoke</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">{</span> pageSize<span class="token punctuation">,</span> pageindex <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// 調用方法並傳遞參數-傳遞的參數和設置的參數要對應,順序不能搞錯了</span> System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">print</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//打印結果(我設置的接收格式爲json字符串,這邊直接打印出來)</span> <span class="token punctuation">}</span><span class="token keyword">catch</span> <span class="token punctuation">(</span>Exception ex<span class="token punctuation">)</span><span class="token punctuation">{</span> ex<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
嗯,上面這段代碼要想成功運行還需要加載幾個jar包:
activation.jar
axis-1.4.jar
axis-jaxrpc-1.4.jar
commons-discovery-0.5.jar
commons-httpclient.jar
mail.jar
wsdl4j-1.6.3.jar
由於方法中用的幾個接口都是上面幾個jar包提供的,所以缺少jar會報錯。jar包可以到maven倉庫下載。jar包加好以後,main方法就可以直接運行啦~~~