2017-07-16 11 views
1

私のプロジェクトでプロキシを作成しました。トランスポートタイプはtcpです。 1:1:14:14008を1479122000#@その応答を使用して 私の応答は、私はクラスメディエーターを使用して、この応答をキャッチし、WZ2OCS2を作成wso2 esbのクラスメディエーターを使用して文字列としてレスポンスを送信する方法

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

です。この文字列をtcpクライアントに送信する必要があります。私は

context.setProperty("responseClientValue", responseClientValue); 

セットした後、この値はクラスメディエーターで私は、ペイロード工場メディエーターを使用し、そのプロパティメディエーターの後にクラスmeditorにこの文字列を設定します。

<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>

文字列値のみを取得する方法はありますか。このような

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

変更プロパティはmessageType:

答えて

0
は、このようなあなたのpayloadFactoryを変更

いただきありがとうございます(デフォルトでは、axis2.xmlをを参照してください

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

、PlainTextFormatterクラスは、text/plainのと関連しています:<messageFormatter contentType="text/plain" class="org.apache.axis2.format.PlainTextFormatter"/>

+0

Jean-Michelありがとうございました。 – Dev4World

+0

@ Jean-Mechil。 tcpクライアントからリクエストを送信すると、リクエストに区切り文字が追加されます。 ex - :request + "?"しかし、レスポンスデリミタには、レスポンスが添付されています.WZ2OCS2として?どうすればその区切り記号を応答から削除できますか。ありがとう – Dev4World

関連する問題