0

我有一项服务返回文本/纯文本内容。响应消息如:RESP0Success" 但在 ESB4.0.3 中,响应如下:

<text xmlns="http://ws.apache.org/commons/ns/payload">&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;message&gt;&lt;MsgType&gt;RESP&lt;/MsgType&gt;&lt;ReturnCode&gt;0&lt;/ReturnCode&gt;&lt;ReturnMessage&gt;Success&lt;/ReturnMessage&gt;&lt;/message&gt;
 </text>

我在axis2.xml中设置了builder和formatter。但是没有用。

<messageBuilder contentType="text/plain"             
class="org.apache.axis2.format.PlainTextBuilder"/>
<messageFormatter contentType="text/plain"
class="org.apache.axis2.format.PlainTextFormatter"/>

anyxone 可以告诉我如何在axis2.xml 中设置构建器和格式化程序吗?我的服务配置是:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="TextPlain" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <property name="ContentType" value="text/plain" scope="axis2" />
         <log level="full" />
      </inSequence>
      <outSequence>
         <log level="full" />
         <property name="ContentType" value="text/plain" scope="axis2" />
         <send />
      </outSequence>
      <endpoint>
         <address uri="http://172.20.28.206:8080/AAAService/recieveMsg" format="pox">
         </address>
      </endpoint>
   </target>
</proxy>
4

2 回答 2

1

我有同样的问题,然后我设置

<property name="messageType" value="text/plain" scope="axis2"/>

现在它可以工作了,如果我从 URL 调用它,它只会返回文本。

<proxy xmlns="http://ws.apache.org/ns/synapse" name="RESTE" transports="http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <property name="messageType" value="text/plain" scope="axis2"/>
         <send/>
      </outSequence>
      <endpoint>
         <address uri="http://10.15.21.189:8180/contadorServicos/ola-mundo"/>
      </endpoint>
   </target>
   <parameter name="serviceType">proxy</parameter>
   <description></description>
</proxy>

不幸的是,Tryit 功能停止工作,现在它给出了以下错误。

<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">Erro no processamento de XML: formatação incorreta Posição: http://xxxxxxx/services/RESTE?tryit# Número da linha 1, coluna 221:
   <sourcetext>&lt;TryitProxyError h:status='SOAP envelope error' xmlns:h='http://wso2.org/ns/TryitProxy'&gt;org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'r' (code 114) in prolog; expected '&lt;'at [row,col {unknown-source}]: [1,1]&lt;/TryitProxyError&gt; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^</sourcetext>
</parsererror>

ps:当我使用其他工具如 SOAPUI 时,它可以正常工作。

于 2013-05-03T13:56:39.200 回答
0

您需要指定消息的 ContentType。由于来自 HTTP 的输入将包含 Soap 信封和正文,因此您的内容将包含在此类标记中。

当您现在告诉您的端点,消息是文本/纯文本类型时,PlainTextFormatter 会将其转换为真实文本并将其发送给您的端点(axis2.xml 只是配置 - 现在您需要告诉您要使用现在是 PlainTextFormatter)

缺少这一行:

<property name="ContentType" value="text/plain" scope="axis2"/>
于 2012-07-13T12:58:05.877 回答