rest - 如何将 text/xml 响应转换为 application/json wso2 EI
问题描述
我有一个肥皂服务,我需要将此服务公开为 Wso2 EI 中的休息 api,内容类型是 text/xml,我尝试过
<property name="messageType" value="application/json" scope="axis2"/>
最后,但它不会将我的响应转换为 json。你能帮我看看怎么做吗?
我试过这个,
<resource methods="POST">
<inSequence>
<send>
<endpoint>
<address uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<property name="messageType" value="application/json" scope="axis2"/>
<send/>
</outSequence>
</resource>
解决方案
这样做的原因是 WSO2 EI 或 ESB 的开发方式是默认使用 SOAP 响应响应 SOAP 请求。当您使用 SOAPAction 和 Content-Type: text/xml 调用 PROXY 或 API 时,EI 将其理解为 SOAP 请求,它会以 SOAP 响应进行响应。
因此,如果客户端请求在 SOAP-1.1 中,EI 将使用 SOAP-1.1 响应进行响应,或者如果客户端请求在 SOAP-1.2 中,EI 将使用 SOAP-1.2 进行响应。
为了绕过这种行为,他们提供了一个额外的属性,如下所示。
<property name="IsClientDoingREST" scope="default" type="BOOLEAN" value="true"/>
因此,在响应客户端之前,应如下设置属性以获得响应 JSON 的预期行为。
<property name="IsClientDoingREST" scope="default" type="BOOLEAN" value="true"/>
<property name="messageType" scope="axis2" value="application/json"/>
这种方法将帮助您从 SOAP 请求中获取 JSON 响应。
推荐阅读
- python - 如何通过jenkins build重启apache2服务
- jgit - 当存储库已经存在时调用 git.init()
- javascript - 从 puppeteter 评估函数中获取未定义
- javascript - Javascript 和 sqlite 请求
- python - SystemError:使用 Keras 加载模型时操作码未知
- sql - MS-ACCESS / SQL - 如何在多个条件下应用 where 子句
- android - Android studio 4.0 新更新版本说 Kotlin 与这个新版本不兼容
- javascript - 如何使用 Rails 响应 HTML 和 JSON?
- windows - 如果选择了错误的值,则 Windows 批处理
- javascript - 我正在使用 Chart JS 在悬停工具提示上显示 div