项目需求上需要调用另一个合作伙伴的webservice接口,之前用的是sax的调用方式,开始摸索这个,感觉这个也挺简单的,现在把自己的实现过程分享给大家,写的不好的地方,望大家勿喷。
详细代码如下:
package com.ancs.oa;
import java.util.Date;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
/**
*
* @ClassName:MessageService
* @Description:调用webservice传入5个参数
* @author luckyboyguo@126.com
* @date:2014年12月25日下午5:16:21
*/
public class MessageService {
public static Object ToOaMessage(String a,String b,String c,String d) throws AxisFault{
// 使用RPC方式调用WebService
RPCServiceClient client=new RPCServiceClient();
Options option=client.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR =new EndpointReference("你的webservice地址");
option.setTo(targetEPR);
// 指定要调用的plus方法及WSDL文件的命名空间
//http://test
QName opAddEntry =new QName("http://webService.oa.ancs.com","docMessageInsert");
// 指定plus方法的参数值
Object[] opAddEntryArgs = new Object[] {a,b,c,d,new Date() };
// 指定plus方法返回值的数据类型的Class对象
Class[] classes = new Class[] { String.class };
// 调用plus方法并输出该方法的返回值
try {
return client.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}