SpringBoot调第三方WebService接口

本文介绍了如何在SpringBoot项目中使用CXF框架来创建和调用WebService接口,包括添加依赖、设置参数和调用过程的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入相关依赖:

<!-- webService-->
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web-services</artifactId>
  </dependency>

  <!-- CXF webservice -->
  <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
      <version>3.2.1</version>
  </dependency>
  <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http</artifactId>
      <version>3.2.1</version>
  </dependency>
浏览webService提供的方法,确定入参顺序
直接在浏览器里面访问url,如下
 
 



//获取webservice接口地址
String endpoint = "http://cmes.huawei.com/hw_manufacture/MidLayer.asmx";
//获取域名地址,server定义的
String soapaction = "http://Auto.huawei.com.cn/";
//调用的方法名
String method = "Get_Info_Frmbarcode";
// 创建一个服务(service)调用(call)
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
// 创建一个服务(service)调用(call)
org.apache.axis.client.Call call = (org.apache.axis.client.Call) service.createCall();// 通过service创建call对象
// 设置service所在URL
call.setTargetEndpointAddress(endpoint);
call.setOperationName(new QName(soapaction, method));
//设置参数及类型,与接口参数对应
call.addParameter(new QName(soapaction, "sTaskType"),
        org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName(soapaction, "sImport"),
        org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setUseSOAPAction(true);
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); //返回参数的类型
call.setSOAPActionURI(soapaction + method); //这个也要注意 就是要加上要调用的方法getStoreList,不然也会报错

//invoke调用方法并传递参数,获取XML
String xmlStr = (String) call.invoke(new Object[]{"BarcodeRelationSend", getEnvelope(barcodeRelationVo)});

private String getEnvelope(BarcodeRelationVo item) {
    StringBuilder sb = new StringBuilder();
    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    sb.append("<BarcodeRelationSend>");
    sb.append("<Import>");
    sb.append("<PO>"+item.getPO()+"</PO>");
    sb.append("<VendorID>"+item.getVENDORID()+"</VendorID>");
    sb.append("<ORGID>"+item.getORGID()+"</ORGID>");
    sb.append("<ItemCode>"+item.getITEMCODE()+"</ItemCode>");
    sb.append("<Barcode>"+item.getBARCODE()+"</Barcode>");
    sb.append("<SonBarcode>"+item.getSONBARCODE()+"</SonBarcode>");
    sb.append("<SonItemCode>"+item.getSONITEMCODE()+"</SonItemCode>");
    sb.append("<Quantity>"+item.getQUANTITY()+"</Quantity>");
    sb.append("<Supplier></Supplier>");
    sb.append("<Manufactory></Manufactory>");
    sb.append("<UploadFlag>"+item.getUPLOADFLAG()+"</UploadFlag>");
    sb.append("<CheckMessage></CheckMessage>");
    sb.append("<CreatedBy>"+item.getCREATEDBY()+"</CreatedBy>");
    sb.append("<CreatedDate>"+item.getCREATEDDATE()+"</CreatedDate>");
    sb.append("<UpdatedBy></UpdatedBy>");
    sb.append("<UpdatedDate></UpdatedDate>");
    sb.append("<Segment1>"+item.getSEGMENT1()+"</Segment1>");
    sb.append("<Segment2>"+item.getSEGMENT2()+"</Segment2>");
    sb.append("<Segment3></Segment3>");
    sb.append("<Segment4></Segment4>");
    sb.append("<Segment5></Segment5>");
    sb.append("<Segment6></Segment6>");
    sb.append("<Segment7></Segment7>");
    sb.append("<ItemID></ItemID>");
    sb.append("<SonItemID></SonItemID>");
    sb.append("<CheckFlag></CheckFlag>");
    sb.append("<EmsTransID>"+item.getEMSTRANSID()+"</EmsTransID>");
    sb.append("<CheckInfo></CheckInfo>");
    sb.append("<Segment8></Segment8>");
    sb.append("<Segment9></Segment9>");
    sb.append("<Segment10>"+item.getSEGMENT10()+"</Segment10>");
    sb.append("<Segment11></Segment11>");
    sb.append("<Segment12></Segment12>");
    sb.append("<Segment13></Segment13>");
    sb.append("<Segment14></Segment14>");
    sb.append("<Segment15></Segment15>");
    sb.append("</Import>");
    sb.append("</BarcodeRelationSend>");

    return sb.toString();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值