【问题标题】:WSO2 ESB - HTML ResponseWSO2 ESB - HTML 响应
【发布时间】:2012-11-25 02:38:26
【问题描述】:

我构建了一个必须返回文本/html 的 GET REST Web 服务(Rest API)。 在序列中,我有一个调解器,我在其中调用一个网页(如http://www.mypage.com 或其他东西),并将其内容放入一个字符串变量中。
之后,我需要在内容中进行一些字符串替换,并将其作为 text/html 发送回客户端。
问题是当我把它放回我的页面时,esb 已将所有<html> 和其他标签替换为<html> 标签。所以网页浏览器不会渲染一个html页面,而只是将标签写入页面本身。

主要思想是它像 servlet 的代理一样工作,我在其中调用 servlet,获取响应,在我得到的 de html 和 javascript 中进行一些字符串替换,然后将其发送给客户端。

这里是序列xml:

 <resource methods="GET" uri-template="/view">
  <inSequence>
     <log level="full"/>
     <header name="To" action="remove"/>
     <property name="URL" value="http://www.mypage.com"/>
     <sequence key="MyMediator"/>
     <property name="RESPONSE" value="true"/>
     <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
     <property name="ContentType" value="text/html" scope="axis2"/>
     <enrich>
        <source type="property" clone="true" property="RESPONSE_MSG"/>
        <target type="body"/>
     </enrich>
     <send/>
  </inSequence>

所以,我将带有 html 的字符串变量(从中介 MyMediator 获取,它是一个 java 类并调用网页 www.mypage.com)放入属性“RESPONSE_MSG”,然后尝试将其写入正文(丰富)。

在这种情况下我得到一个错误,因为我设置的属性是一个字符串而不是一个 XML。
如果我使用payloadFactory而不是enrich,那么它将生成一个XML,我将获得带有&amp;lt;html&amp;gt;的html标签。

我想知道一种有效的方法,我可以从中介发送字符串变量,并且它不会被转换为一些 xml,其中字符串中的所有 html 标记都被 &amp;lt; 和 &amp;gt; 替换。或者我可以像上面的代码一样发送它而不会出现任何错误。我是否必须为我放入属性 RESPONSE_MSG 中的变量使用另一种类型?

提前致谢!

【问题讨论】:

    标签: html rest wso2 wso2esb esb


    【解决方案1】:

    这是使用的messageFormatter(text/html)的问题。检查 conf 目录中的 axis2.xml 文件,查看为关键字 text/html 配置了哪个 messageFormatter。否则可以尝试使用普通的 XML 构建器(即 application/xml)。

    【讨论】:

    • 我认为axis2.xml中的messageFormatter没问题,它为“text/html”ContentType配置了org.wso2.carbon.relay.ExpandingMessageFormatter。我在问题中添加了更多信息以澄清一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    相关资源
    最近更新 更多