【问题标题】:How to convert text/xml response into application/json wso2 EI如何将 text/xml 响应转换为 application/json wso2 EI
【发布时间】:2019-06-20 03:16:54
【问题描述】:

我有一个soap服务,我需要在Wso2 EI中将这个服务公开为一个rest 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>

【问题讨论】:

  • 您是否在请求中发送“接受”标头?如果有,是什么类型的?
  • 我要传两个header参数,1,SOAPAction,2,Content-type:text/xml,insequence里面怎么设置

标签: rest soap wso2 wso2esb wso2ei


【解决方案1】:

原因是 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 响应。

【讨论】:

    【解决方案2】:

    它应该可以完美运行。下面给出了一个示例 REST API 配置。

    <api xmlns="http://ws.apache.org/ns/synapse" name="CheckREST" context="/samplerest">
       <resource methods="GET">
          <inSequence>
             <send>
                <endpoint>
                   <http uri-template="http://localhost:8280/services/sampleSOAPproxy"/>
                </endpoint>
             </send>
          </inSequence>
          <outSequence>
             <property name="messageType" value="application/json" scope="axis2" type="STRING"/>
             <send/>
          </outSequence>
       </resource>
    </api>
    

    如果不工作,请注明您使用的EI版本。

    【讨论】:

    • 请求标头应该是什么?特别是内容型
    • 我的EI版本是6.4.0。
    • 我没有添加任何特定的请求标头。由于我们在 outSequence 中指定了响应头,因此我们将只获取 JSON 响应。
    • 如果我的肥皂服务正在验证内容类型 text/xml 标头,我该如何继续
    • 发送 SOAP 请求时,可以在请求头中添加 Content-Type : text/xml。
    猜你喜欢
    • 2020-02-24
    • 2020-02-14
    • 2016-12-22
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多