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