webserive联调第三方接口

1. 通过soapui新建一个soapui project并填上项目一个地址类似这样:http://127.0.0.1:8888/EsbBusService.asmx?WSDL

2.输入请求xml 类似这样:需要在body外加上:<![CDATA[  ]]> 

<soap:Envelope xmlns:soap="" xmlns:tem="/">
   <soap:Header/>
   <soap:Body>
      <tem:Process>
         <tem:XmlString>
            <![CDATA[ 
             <body>
         <head>
            <test>123456</test>
            
       </head>
          <resquest>
              <test2></test2>
          </resquest>
        </body>
               ]]>      
         </tem:XmlString>
      </tem:Process>
   </soap:Body>
</soap:Envelope>

3.用定义一个和xml对应的实体类

@Data
@XStreamAlias("request")
public class TestBean{

        @XStreamAlias("test2")
        private String test2;

       

}

 

4.使用xstream将实体类转换为xml

XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.processAnnotations(new Class[]{TestBean.class});
xStream.autodetectAnnotations(true);

5.xstream发起请求方法:

public  static Object  getResponse(String xml)  {
        Object[] results = new Object[2];
        try {
            JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
            Client client = factory.createClient("http://127.0.0.1:8888/EsbBusService.asmx?WSDL");

            HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();    // 策略
            httpClientPolicy.setConnectionTimeout( 18000 );    //连接超时
            httpClientPolicy.setAllowChunking( false );
            httpClientPolicy.setReceiveTimeout( 10000 );       //接收超时
            HTTPConduit http = (HTTPConduit) client.getConduit();
            http.setClient(httpClientPolicy);
            // "Process" 为方法名  xml为整个body请求体
            results = client.invoke("Process", xml);
        }catch (Exception e){
            e.printStackTrace();
        }
        return results[0];
    }

"Process"方法名来源:

xml为请求体body部分xml,只包括body部分xml。

 

5.获取结果后将结果xml解析为实体类:

@XStreamImplicit  用于集合
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值