2017-07-16 52 views
1

在我的项目中,我创建了一些代理。其中传输类型为tcp。 我的回答是如何使用wso2中的类中介发送响应作为字符串esb

{ 
"BillingSystem": { 
    "request_id": "20114140080000011479122000", 
    "request_timestamp": "12102012121200", 
    "response_timestamp": "12102012121300", 
    "action": "AddSubscription", 
    "username": "Cellcard ", 
    "result_code": "0", 
    "result_desc": "Success" 
} 
} 

我使用类中介抓住这个响应,并创建WZ2OCS2:使用响应@ 1479122000#:1:14:14008:1。我需要发送此字符串到tcp客户端。我在班上meditor

context.setProperty("responseClientValue", responseClientValue); 

集后在课堂调解员这个值我用的有效载荷工厂调停和调停财产后设置此字符串。

<payloadFactory description="" media-type="xml"> 
     <format> 
      <name xmlns="">$1</name> 
     </format> 
     <args> 
      <arg evaluator="xml" expression="get-property('responseClientValue')"/> 
     </args> 
</payloadFactory> 

物业中介

<property name="messageType" scope="axis2" type="STRING" value="application/text"/> 

当我运行项目它显示XML代码

<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><name>WZ2OCS2:1:14:14008:1:@1479122000#</name></soapenv:Body></soapenv:Envelope>? 

这里是我的代理服务

<?xml version="1.0" encoding="UTF-8"?> 
 
<proxy name="SurepayBillingErrorHandlingProxy" startOnLoad="true" transports="tcp" xmlns="http://ws.apache.org/ns/synapse"> 
 
    <target> 
 
     <inSequence> 
 
      <class description="" name="esb.cellcard.billing.SurepayMediator"/> 
 
      <property name="messageType" scope="axis2" type="STRING" value="application/json"/> 
 
      <send> 
 
       <endpoint key="SurpayBillingEP"/> 
 
      </send> 
 
     </inSequence> 
 
     <outSequence> 
 
      <class name="esb.cellcard.billing.ResponseRequestId"/> 
 
      <payloadFactory description="" media-type="xml"> 
 
       <format> 
 
        <name xmlns="">$1</name> 
 
       </format> 
 
       <args> 
 
        <arg evaluator="xml" expression="get-property('responseClientValue')"/> 
 
       </args> 
 
      </payloadFactory> 
 
      <property name="messageType" scope="axis2" type="STRING" value="application/text"/> 
 
      <send/> 
 
     </outSequence> 
 
     <faultSequence/> 
 
    </target> 
 
    <parameter name="transport.tcp.responseClient">true</parameter> 
 
    <parameter name="transport.tcp.inputType">string</parameter> 
 
    <parameter name="transport.tcp.recordDelimiter">?</parameter> 
 
    <parameter name="transport.tcp.contentType">text/plain</parameter> 
 
    <parameter name="transport.tcp.port">6050</parameter> 
 
    <parameter name="transport.tcp.recordDelimiterType">character</parameter> 
 
</proxy>

我怎样才能得到字符串值。谢谢

回答

0

更改payloadFactory这样的:

<payloadFactory> 
    <format> 
     <text xmlns="http://ws.apache.org/commons/ns/payload">$1</text> 
    </format> 
    <args> 
     <arg evaluator="xml" expression="$ctx:responseClientValue"/> 
</payloadFactory> 

更改属性为messageType这样的:

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

(见axis2.xml,默认情况下,PlainTextFormatter类与text/plain的相关:<messageFormatter contentType="text/plain" class="org.apache.axis2.format.PlainTextFormatter"/>

+0

谢谢让米歇尔。 – Dev4World

+0

@ Jean-Mechil。当我通过tcp客户端发送请求时,我将分隔符添加到请求中。前 - :请求+“?”但是当响应分隔符附带响应时。如WZ2OCS2 ?.如何从响应中删除该分隔符。谢谢 – Dev4World