Web 服务响应 HTML 而不是 SOAP 消息
Webservice response as HTML instead of SOAP message
我正在处理一个 wso2 场景,在该场景中,我将 SOAP 消息发送到 Web 服务,然后接收并操作答案。为此,我有两个 Web 服务。一个放在测试环境中 (1),另一个是实际环境 (2)。
我无权访问网络服务代码,我只是一个用户。
问题是:
通过SOAPUI
- 我可以使用来自网络服务 (1) 和 (2) 的服务。没有错误,一切正常。
通过WSO2
- 我可以使用网络服务 (1) 中的服务,但是当我指向网络服务 (2) 时,我收到 HTML 403 Forbidden 响应而不是 SOAP/XML 消息。
我是不是遗漏了什么,或者这可能是网络服务配置错误?
根据我的 in/out 请求:
序列:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="pricing" trace="enable" xmlns="http://ws.apache.org/ns/synapse">
<smooks config-key="smooks-csv.xml">
<input type="text"/>
<output type="xml"/>
</smooks>
<iterate expression="//product" id="iterateXML" sequential="true"
xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd">
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<xyz xmlns="http://tempuri.org/">
<safeKey></safeKey>
<storeId></storeId>
<articleId></articleId>
<barcode/>
<sku></sku>
<price></price>
<discount></discount>
</xyz>
</format>
<args>
<arg evaluator="xml" expression="//articleId"/>
<arg evaluator="xml" expression="//sku"/>
<arg evaluator="xml" expression="//price"/>
<arg evaluator="xml" expression="//discount"/>
<arg evaluator="xml" expression="//storeId"/>
<arg evaluator="xml" expression="//key"/>
</args>
</payloadFactory>
<in>
<header name="Action" scope="default" value="http://tempuri.org/xyz"/>
<send>
<endpoint>
<recipientlist>
<endpoint key="PS_PRICING"/>
<endpoint key="fileSave"/>
</recipientlist>
</endpoint>
</send>
<drop/>
</in>
<out>
<send/>
</out>
<log level="full" separator=";">
<property expression="*" name="ResponsePriceUpdate"/>
</log>
</sequence>
</target>
</iterate>
</sequence>
更新:
使用 TCPMon 和 TCPTrace 进行测试后,我得到以下信息:
通过 SOAPUi
- 如果我发送消息 SOAPUi -> Live Webservice - 工作正常!(图 a)
- 如果我发送消息 SOAPUi -> TCPMon/TCPTrace -> Live Webservice - 403 Forbidden!(图 b)
对我来说完全没有意义。我 运行 没主意了。
(一)
(b)
也许添加 ?wsdl
作为 url 的后缀:http://sample.com/webservice.asmx?wsdl
对于发现此问题相关的人:
问题出在服务器端。服务器正在拒绝某些 "unknown" 传入流量来源。
我正在处理一个 wso2 场景,在该场景中,我将 SOAP 消息发送到 Web 服务,然后接收并操作答案。为此,我有两个 Web 服务。一个放在测试环境中 (1),另一个是实际环境 (2)。
我无权访问网络服务代码,我只是一个用户。
问题是:
通过SOAPUI
- 我可以使用来自网络服务 (1) 和 (2) 的服务。没有错误,一切正常。
通过WSO2
- 我可以使用网络服务 (1) 中的服务,但是当我指向网络服务 (2) 时,我收到 HTML 403 Forbidden 响应而不是 SOAP/XML 消息。
我是不是遗漏了什么,或者这可能是网络服务配置错误?
根据我的 in/out 请求:
序列:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="pricing" trace="enable" xmlns="http://ws.apache.org/ns/synapse">
<smooks config-key="smooks-csv.xml">
<input type="text"/>
<output type="xml"/>
</smooks>
<iterate expression="//product" id="iterateXML" sequential="true"
xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd">
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<xyz xmlns="http://tempuri.org/">
<safeKey></safeKey>
<storeId></storeId>
<articleId></articleId>
<barcode/>
<sku></sku>
<price></price>
<discount></discount>
</xyz>
</format>
<args>
<arg evaluator="xml" expression="//articleId"/>
<arg evaluator="xml" expression="//sku"/>
<arg evaluator="xml" expression="//price"/>
<arg evaluator="xml" expression="//discount"/>
<arg evaluator="xml" expression="//storeId"/>
<arg evaluator="xml" expression="//key"/>
</args>
</payloadFactory>
<in>
<header name="Action" scope="default" value="http://tempuri.org/xyz"/>
<send>
<endpoint>
<recipientlist>
<endpoint key="PS_PRICING"/>
<endpoint key="fileSave"/>
</recipientlist>
</endpoint>
</send>
<drop/>
</in>
<out>
<send/>
</out>
<log level="full" separator=";">
<property expression="*" name="ResponsePriceUpdate"/>
</log>
</sequence>
</target>
</iterate>
</sequence>
更新:
使用 TCPMon 和 TCPTrace 进行测试后,我得到以下信息:
通过 SOAPUi
- 如果我发送消息 SOAPUi -> Live Webservice - 工作正常!(图 a)
- 如果我发送消息 SOAPUi -> TCPMon/TCPTrace -> Live Webservice - 403 Forbidden!(图 b)
对我来说完全没有意义。我 运行 没主意了。
(一)
(b)
也许添加 ?wsdl
作为 url 的后缀:http://sample.com/webservice.asmx?wsdl
对于发现此问题相关的人:
问题出在服务器端。服务器正在拒绝某些 "unknown" 传入流量来源。