当前位置: 代码迷 >> Java Web开发 >> 客户端使用何种方式调用webservice服务?该如何处理
  详细解决方案

客户端使用何种方式调用webservice服务?该如何处理

热度:16   发布时间:2016-04-17 11:12:24.0
客户端使用何种方式调用webservice服务?
知道了wsdl地址,因为参数都是基本类型,所以使用javax.xml.soap 包下的api自己发送SOAP消息,解析响应数据 。
但速度是相当的慢!!
如果使用xfire或axis2等webservice框架效率会不会有所提升?
有没有不是基于XML实现的、效率比较高的webservice调用方式?
各位前辈提提意见,小子先行谢过

------解决方案--------------------
速度是没有办法控制
------解决方案--------------------
探讨
知道了wsdl地址,因为参数都是基本类型,所以使用javax.xml.soap 包下的api自己发送SOAP消息,解析响应数据 。
但速度是相当的慢!!
如果使用xfire或axis2等webservice框架效率会不会有所提升?
有没有不是基于XML实现的、效率比较高的webservice调用方式?
各位前辈提提意见,小子先行谢过

------解决方案--------------------
Java调用以WSDL形式发布的web service有三种方式(你知道的,这供初学者学习)
1,直接AXIS调用远程的web service
我觉得这种方法比较适合那些高手,他们能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是专门搞这行的,即使一段时间看懂,后来也就忘记了。直接调用模式如下:
Java code
import java.util.Date;import java.text.DateFormat;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import javax.xml.namespace.QName;import java.lang.Integer;import javax.xml.rpc.ParameterMode;public class caClient {public static void main(String[] args) {try {String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";//直接引用远程的wsdl文件//以下都是套路 Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName("addUser");//WSDL里面描述的接口名称call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);//接口的参数call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型String temp = "测试人员"; String result = (String)call.invoke(new Object[]{temp});//给方法传递参数,并且调用方法System.out.println("result is "+result);}catch (Exception e) {System.err.println(e.toString());}}}
  相关解决方案