Axios调用WSDL进行Webservice请求

 说明: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;
    }



}

猜你喜欢

转载自blog.csdn.net/weixin_39102174/article/details/90617385