本文以实际场景为例介绍接入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}"
图片中各个选项值的定义:
- 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地址,调用时可以根据实际的服务地址进行设置。
- 1、-soap12 SOAP的版本,根据WSDL里的如下命名空间:
- curl
- 非公开访问(需要订购)的服务。
在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的配置说明
服务配置
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>