发表评论
在客户端调用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());
}
}
}