本文以实际场景为例介绍接入WebService协议开放WebService协议,以帮助您深入理解开放服务。

背景信息

本文仅介绍在实际场景中接入HSF协议开放RESTful服务时一些重要的配置步骤和参数,如需了解完整的流程和参数解释,请参见发布后端已有服务

调用CSB开放服务时,支持多种请求方式,请根据实际场景选择:
  • 公开访问(无需订购)的服务。
    • curl
      curl -H 'Content-type:application/xml' -X POST -d "${Body}" \
      http://CSB服务地址:9081/${服务名称}/${服务版本}/ws2ws?wsdl
    • WS-SDK
      java -jar ws-client.jar -d -api ${服务名称} -version ${服务版本} \
      -ea ${ea} -ns ${ns} \
      -sname ${sname} -pname ${pname} \
      -rd "${Body}"
      3

      图片中各个选项值的定义:

      • 1、-soap12 SOAP的版本,根据WSDL里的如下命名空间:

        xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"

        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

      • 2、-ns 目标命名空间。
      • 3、-pname 端口名。
      • 4、-sname 服务名。
      • 5、-ea 默认的endpoint地址,调用时可以根据实际的服务地址进行设置。
  • 非公开访问(需要订购)的服务。
    在WS-SDK的基础上增加-ak ${访问凭证ak} -sk ${访问凭证sk}
    java -jar ws-client.jar -d -api ${服务名称} -version ${服务版本} -ak ${访问凭证ak} -sk ${访问凭证sk} \
    -wa ${wa} -ea ${ea} -ns ${ns} \
    -sname ${sname} -pname ${pname} \
    -rd "${Body}"

接入WebService开放WebService的配置说明

服务配置Webservice-服务配置

WSDL

http://CSB服务地址:9081/${服务名称}/${服务版本}/ws2ws?wsdl

接入后端服务

ResultDTO<Item> add(@WebParam(name = "item") Item item);

调用服务

您可以选择以下任一请求代码调用后端服务,代码中的service.ken.com是测试用的后端ws应用。
  • 使用WS-SDK请求后端服务。
    java -jar ws-client.jar -api item.ws -version 1.0.0 \
    -ea http://csb.target.server:9081/item.ws/1.0.0/ws2ws \
    -ns http://service.ken.com \
    -sname ItemWsServiceImplService \
    -pname ItemBizService \
    -rd '<soapenv:Envelope  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://service.ken.com">
      <soapenv:Header/>
      <soapenv:Body>
        <wst:add>
          <item>
            <itemName>benz</itemName>
            <quantity>1</quantity>
          </item>
        </wst:add>
      </soapenv:Body></soapenv:Envelope>'
  • 通过curl工具请求调用服务,增加至Header参数里。
    curl -H 'Content-type:application/xml' -X POST -d '<soapenv:Envelope
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:wst="http://service.ken.com">
        <soapenv:Header/>
        <soapenv:Body>
            <wst:add>
                <item>
                    <itemName>benz</itemName>
                    <quantity>10</quantity>
                </item>
            </wst:add>
        </soapenv:Body>
    </soapenv:Envelope>' http://csb.target.server:9081/item.ws/1.0.0/ws2ws?wsdl

请求结果

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:addResponse
            xmlns:ns2="http://service.ken.com">
            <return>
                <itemName>benz</itemName>
                <quantity>73</quantity>
                <trace>
                    <bizId>0ba783c115667270091151002d****</bizId>
                    <requestId>0ba783c115673315358431001d****</requestId>
                    <rpcId>0.1</rpcId>
                    <traceId>0ba783c115673315360741003****</traceId>
                </trace>
            </return>
        </ns2:addResponse>
    </soap:Body>
    <SOAP-ENV:Header/>
</soap:Envelope>