java調用webservice接口(.asmx)

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方法就可以直接運行啦~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章