张晨的个人博客

客户端使用Service和Call调用AXIS2的webservice服务

张晨的个人博客2014-05-07综合技术 2313 0A+A-

在客户端调用axis的Service和Call的方式访问webservice服务。

(接口相关:之前写的使用AXIS2部署WEBSERVCE服务-->AXIS2部署WebService实战

一、首先需要引入AXIS的jar包,如下:

axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
jaxrpc.jar
saaj.jar
wsdl4j.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());
		 }
}
}

 

文章关键词
AXIS
axis2
webservice
客户端
发表评论