java 调用webService接口工具类

这几天在测试调用webService的接口,把遇到的坑分享给大家。

最先说导包,这里用的是maven


        
            org.apache.axis2
            axis2-adb
            1.7.8
            
                
                    javax.servlet
                    servlet-api
                
            
        

        
        
            org.apache.axis2
            axis2-transport-local
            1.7.8
            
                
                    javax.servlet
                    servlet-api
                
            
        
        
        
            org.apache.axis2
            axis2-transport-http
            1.7.8
        

java 调用webService接口工具类_第1张图片

这解释下为什么要加入这段,在做web项目是,项目已经引用了javax.servlet-api 3.1.0,可axis2包里面依赖的是2.3的,结果就版本冲突了。

工具类和测试代码:

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.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.commons.collections.map.HashedMap;
import java.util.Map;

/**
 * call调用webservice接口用具类
 * Created by AlterEgo on 2018/6/7.
 */
public class CallWebServiceUtils {

    /**
     * call调用webservice接口
     * @param url 接口地址
     * @param nameSpace 命名空间
     * @param methodName 方法名
     * @param paramMap 参数Map
     * @return
     */
    public static OMElement callWebServiceAxis2(String url, String nameSpace, String methodName, Map paramMap) throws Exception {
        OMElement result = null;
        try {
            ServiceClient serviceClient = new ServiceClient();
            //创建WebService的URL
            EndpointReference targetEPR = new EndpointReference(url);
            Options options = serviceClient.getOptions();
            options.setTo(targetEPR);
            //确定调用方法( 命名空间地址 (namespace) 和 方法名称)
            options.setAction(nameSpace + methodName);
            OMFactory fac = OMAbstractFactory.getOMFactory();
            OMNamespace omNs = fac.createOMNamespace(nameSpace, "");
            OMElement method = fac.createOMElement(methodName, omNs);
            // 遍历传入方法的参数
            for (String key : paramMap.keySet()) {
                OMElement element = fac.createOMElement(key, omNs);
                Object obj = paramMap.get(key);
                if (obj != null) {
                    element.setText(paramMap.get(key).toString());
                }
                method.addChild(element);
            }
            method.build();
            //调用接口
            result = serviceClient.sendReceive(method);
            String resultTexe = result.getFirstElement().getText();
        } catch (AxisFault axisFault) {
            axisFault.printStackTrace();
        }
        return result;
    }

    /**
     * call调用webservice接口
     * @param url 接口地址
     * @param nameSpace 命名空间
     * @param methodName 方法名
     * @param paramMap 参数Map
     * @return
     */
    public static String callWebServiceAxis2Text(String url, String nameSpace, String methodName, Map paramMap) throws Exception {
        OMElement element = callWebServiceAxis2(url, nameSpace, methodName, paramMap);
        String resultTexe = "";
        if (element != null) {
            resultTexe = element.getFirstElement().getText();
        }
        return resultTexe;
    }

    public static void main(String attr []){
//        String url = "http://39.102.123.17:9000/PushUserService.asmx";
//        String nameSpace = "http://groms.com/";
//        String methodName = "CloseAccount";
//        Map paramMap = new HashedMap();
//        paramMap.put("id","123456");
//        paramMap.put("userCode","test123");
//        paramMap.put("unitId","orgId001");
//        paramMap.put("unitName","斯蒂芬森公司");
//        try {
//            String result = callWebServiceAxis2Text(url,nameSpace,methodName,paramMap);
//            System.out.println(result);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }

打开接口地址,可以看到以下信息,注意nameSpace后面的“/”,一定不能省。

java 调用webService接口工具类_第2张图片


你可能感兴趣的:(java后端)