私のプロジェクトでプロキシを作成しました。トランスポートタイプは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:
Jean-Michelありがとうございました。 – Dev4World
@ Jean-Mechil。 tcpクライアントからリクエストを送信すると、リクエストに区切り文字が追加されます。 ex - :request + "?"しかし、レスポンスデリミタには、レスポンスが添付されています.WZ2OCS2として?どうすればその区切り記号を応答から削除できますか。ありがとう – Dev4World