Java调用WebService服务(基于axis2)
前提
- 获取目标WebService服务的地址:http://Server:Port/xxx/xxx/xxxxxxxx.asmx
- 获取目标服务中需要调用的方法名:xxxxxx
- 根据WSDL文件或访问http://Server:Port/xxx/xxx/xxxxxxxx.asmx 得到目标服务的NameSpace
引入的依赖
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>addressing</artifactId>
<version>1.41</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
示例代码
package cn.xy;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.extern.slf4j.Slf4j;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.util.Map;
@Slf4j
public class WebServiceInvokeDemo {
public static String nameSpace = "http://tempuri.org/";
public static String url_pushData = "http://Server:Port/xxx/xxx/xxxxxxxx.asmx";
public static String actionName_pushData = "GetData";
public static void main(String[] args) {
pushData();
}
public static void pushData() {
try {
EndpointReference targetEPR = new EndpointReference(url_pushData);
ServiceClient sender = new ServiceClient();
sender.setOptions(buildOptions(targetEPR, nameSpace, actionName_pushData));
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(nameSpace, "");
OMElement method = fac.createOMElement(actionName_pushData, omNs);
OMElement dataSrcCode = fac.createOMElement("param1", omNs);
dataSrcCode.setText("0001");
method.addChild(dataSrcCode);
OMElement psYwxtbh = fac.createOMElement("param2", omNs);
psYwxtbh.setText("002");
method.addChild(psYwxtbh);
OMElement psZdbh = fac.createOMElement("param3", omNs);
psZdbh.setText("xxxxx");
method.addChild(psZdbh);
method.build();
System.out.println("MainDataDemo.main 开始调用接口,sending~~~");
OMElement result = sender.sendReceive(method);
String str = result.toString();
System.out.println("str ==============================\n " + str);
} catch (AxisFault axisFault) {
axisFault.printStackTrace();
}
}
public static Options buildOptions(EndpointReference targetAirline, String nameSpace, String method) {
Options options = new Options();
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
options.setAction(nameSpace + method);
options.setTo(targetAirline);
return options;
}
}