说明:Axios2发送wsdl的webservice请求时,参数名默认是arg0、arg1、、、,不知道如何修改,所以改用了Axios1
package com.utils;
import com.pojo.RequestParam;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import java.net.URL;
/**
* 获取wsdl的数据
*/
public class SoupUtils {
/**
*
* @param requestParam
* @return
*/
public static String sapSoup(RequestParam requestParam){
String url ="WSDL地址";
Service service = new Service();
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(url));
// WSDL里面描述的接口名称(要调用的方法)
// nameSpace是wsdl中首标签中targetNameSpace的值
// methodName是要调用的方法名
QName name=new QName(nameSpace,methodName);;
call.setOperationName(name);
//跨平台调用加上这个
call.setUseSOAPAction(true);
// 接口方法的参数名, 参数类型,参数模式 IN(输入), OUT(输出) or INOUT(输入输出)
Object[] objects={};
// 设置被调用方法的返回值类型
call.setReturnType(XMLType.XSD_STRING);
//WSDL访问需要用户名密码验证时需要
call.setUsername("用户名");
call.setPassword("密码");
// 此方法只返回结果,不包括webservice返回的xml内容
Object result = call.invoke(objects);
//获取soup返回的XML内容
String xmlStr=call.getMessageContext().getCurrentMessage().getSOAPPartAsString();
return xmlStr;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}