发表评论
在客户端调用axis的Service和Call的方式访问webservice服务。
(接口相关:之前写的使用AXIS2部署WEBSERVCE服务-->AXIS2部署WebService实战)
一、首先需要引入AXIS的jar包,如下:
axis.jar二、调用代码
package com.test; import java.net.URL; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; /** * * @since: 2014年5月7日 * @author ZhangChen * @description:WebService客户端调用测试 */ public class Test { public static void main(String[] args) throws Exception { try { String url = "http://localhost:8080/CACore/services/QuerySaleInfo?wsdl"; Service serv = new Service(); Call call = null; call = (Call) serv.createCall(); //下面这两段代码,是为了处理返回的特殊类型写的, //如果只是简单地返回基本类型,可以不用写这两段代码; QName qn=new QName("http://service.axis2.component.newtouch.com", "querySaleInfo"); // 注册序列化和反序列化类 call.registerTypeMapping(String.class, qn, new org.apache.axis.encoding.ser.BeanSerializerFactory(String.class, qn), new org.apache.axis.encoding.ser.BeanDeserializerFactory(String.class, qn)); call.setTargetEndpointAddress(new URL(url)); /* * 这里的new QName的URL,就是要指向的命名空间的名称了, * 这个URL地址在你的wsdl打开后可以看到的,上面有写着 * targetNamespace="http://www.foresee.com.cn/spiderweb/webservice", * 这个就是你的命名空间值了; */ call.setOperationName(qn); // 接口的参数 call.addParameter("xml", org.apache.axis.Constants.XSD_STRING ,javax.xml.rpc.ParameterMode.IN); //设置返回类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); call.setSOAPActionURI(url); String xml = "<?xml version=\"1.0\" encoding=\"GBK\"?>\r\n"+ "<Root>"+ "<TransData>"+ "<TransHead>"+ "<TransType>211313</TransType>"+ "<TransDate>2014-04-18</TransDate>"+ "<TransTime>18:12:40</TransTime>"+ "<Reserve>"+ "<Resv1></Resv1>"+ "<Resv2></Resv2>"+ "<Resv3></Resv3>"+ "<Resv4></Resv4>"+ "<Resv5></Resv5>"+ "</Reserve>"+ "</TransHead>"+ "<TransBody>"+ "<AgentCode>010100000001026</AgentCode>"+ "<AgentLicNo>002</AgentLicNo>"+ "<AgentGroup></AgentGroup>"+ "<Resv1></Resv1>"+ "<Resv2></Resv2>"+ "<Resv3></Resv3>"+ "<Resv4></Resv4>"+ "<Resv5></Resv5>"+ "</TransBody>"+ "</TransData>"+ "</Root>";
String xml1 = (String) call.invoke(new Object[] {xml}); System.out.println(xml1); } catch (Exception e) { System.err.println(e.toString()); } } }