2016-04-28 3 views
0

Im Folgenden wird der Proxy in WSO2 ESB 4.8.1 implementiert. Diese Antwortantwort wird im Binärformat wie neben dem Proxycode angezeigt. Antwort wird in der XML-Antwort erwartet.So konvertieren Sie die Serviceantwort von binär nach XML in WSO2 ESB 4.8.1

Hinweis: Dieser Proxy gibt die XML-Antwort in WSO2 ESB 4.9.0 erwartungsgemäß zurück.

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="postIDMPCall-withheader" 
     transports="https http" 
     startOnLoad="true" 
     trace="disable"> 
    <description/> 
    <target> 
     <inSequence> 
     <in> 
      <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/> 
      <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/> 
      <payloadFactory media-type="xml"> 
       <format> 
        <organizationList xmlns=""> 
        <Organization> 
         <sourceRecordId>132</sourceRecordId> 
         <idmpRecordId>0</idmpRecordId> 
         <orgName>depcomp</orgName> 
         <smeNumber/> 
         <psmflCode/> 
         <countryCode>AF</countryCode> 
         <shortName/> 
         <remarks/> 
         <address>addressgger</address> 
         <city>mys</city> 
         <state>kar</state> 
         <postalCode>234</postalCode> 
         <contactPhone/> 
         <phoneExtension/> 
         <faxNumber/> 
         <faxExtension/> 
         <webSite/> 
         <active>YES</active> 
         <organizationId/> 
        </Organization> 
        </organizationList> 
       </format> 
       <args/> 
      </payloadFactory> 
      <log> 
       <property name="before call" expression="$body"/> 
      </log> 
      <property name="user" value="system" scope="default" type="STRING"/> 
      <property name="password" 
         value="Password2#" 
         scope="default" 
         type="STRING"/> 
      <header name="_user" scope="transport" expression="get-property('user')"/> 
      <header name="_password" 
        scope="transport" 
        expression="get-property('password')"/> 
      <log> 
       <property name="header" expression="get-property('user')"/> 
      </log> 
      <call blocking="true"> 
       <endpoint> 
        <address uri="http://<ipaddress>:<port>/<rest-Services-path>/UpdateOrganization" 
          format="rest"/> 
       </endpoint> 
      </call> 
      <log> 
       <property name="after call" expression="$body"/> 
      </log> 

<property name="messageType" value="text/xml" scope="axis2" type="STRING"/>    <header name="To" scope="default" action="remove"/> 
       <property name="RESPONSE" value="true"/> 
       <send/> 
       <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/> 
       <drop/> 
      </in> 
      </inSequence> 
     </target> 
    </proxy> 

1.Logs:

[ESB] [2016-05-04 15:10:27,222] INFO {org.apache.synapse.mediators.builtin.LogMediator} - To: /services/postIDMPCall-withheader.postIDMPCall-withheaderHttpSoap12Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:b5814442-977e-43ed-9cc9-f60faa46c5c2, Direction: request, before call = <soapenv:Body xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><organizationList><Organization><sourceRecordId>132</sourceRecordId><idmpRecordId>0</idmpRecordId><orgName>depcomp</orgName><smeNumber></smeNumber><psmflCode></psmflCode><countryCode>AF</countryCode><shortName></shortName><remarks></remarks><address>addressgger</address><city>mys</city><state>kar</state><postalCode>234</postalCode><contactPhone></contactPhone><phoneExtension></phoneExtension><faxNumber></faxNumber><faxExtension></faxExtension><webSite></webSite><active>YES</active><organizationId></organizationId></Organization></organizationList></soapenv:Body> {org.apache.synapse.mediators.builtin.LogMediator} 
TID: [0] [ESB] [2016-05-04 15:10:27,230] INFO {org.apache.synapse.core.axis2.TimeoutHandler} - This engine will expire all callbacks after : 120 seconds, irrespective of the timeout action, after the specified or optional timeout {org.apache.synapse.core.axis2.TimeoutHandler} 
TID: [0] [ESB] [2016-05-04 15:10:31,066] INFO {org.apache.synapse.mediators.builtin.LogMediator} - To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:cee9a5c2-1f64-4ff3-a6bd-712785567f8d, Direction: request, after call = <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><axis2ns1:binary xmlns:axis2ns1="http://ws.apache.org/commons/ns/payload">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8b3JnYW5pemF0aW9uUmVzcG9uc2VMaXN0PgogICAgPE9yZ2FuaXphdGlvbj4KICAgICAgICA8c291cmNlUmVjb3JkSWQ+MTMyPC9zb3VyY2VSZWNvcmRJZD4KICAgICAgICA8aWRtcFJlY29yZElkPjE3MTY5PC9pZG1wUmVjb3JkSWQ+CiAgICAgICAgPHN1Y2Nlc3M+U1VDQ0VTUzwvc3VjY2Vzcz4KICAgICAgICA8ZXJyb3I+Tm8gRXJyb3JzPC9lcnJvcj4KICAgIDwvT3JnYW5pemF0aW9uPgo8L29yZ2FuaXphdGlvblJlc3BvbnNlTGlzdD4K</axis2ns1:binary></soapenv:Body> {org.apache.synapse.mediators.builtin.LogMediator} 

2.Response im Binärformat erhalten:

<axis2ns6:binary xmlns:axis2ns6="http://ws.apache.org/commons/ns/payload">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8b3JnYW5pemF0aW9uUmVzcG9uc2VMaXN0PgogICAgPE9yZ2FuaXphdGlvbj4KICAgICAgICA8c3VjY2Vzcz5GQUlMVVJFPC9zdWNjZXNzPgogICAgICAgIDxlcnJvcj5SZWNvcmQgaXMgbm90IHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkuIFBsZWFzZSBQcm92aWRlIHZhbGlkIFJlcXVlc3QgWE1MPC9lcnJvcj4KICAgIDwvT3JnYW5pemF0aW9uPgo8L29yZ2FuaXphdGlvblJlc3BvbnNlTGlzdD4K</axis2ns6:binary>  

Antwort

0

Um ein XML-Nutzlast zu JSON zu konvertieren, setzen Sie die Eigenschaft auf message application/json im Bereich axis2, bevor die Nachricht an einen Endpunkt gesendet wird.

<property name="messageType" value="application/json" scope="axis2"/> 
+0

Erwartung von XML-Antwort, aber Rückgabe des Binärformats. Ich würde gerne wissen, warum dies binär zurückkehrt, wenn Rest Service aufgerufen wird? Andernfalls können wir jede Option haben, um eine binäre Antwort in eine XML-Antwort umzuwandeln. Ich habe versucht, den Transport auf nhttp zu ändern, aber das kann nicht funktionieren. –

0

Ich bin mir nicht sicher, warum Sie nur in Sequence haben. Und Sie protokollieren sowohl vor als auch nach dem Aufruf Inhalt in InSequence.

Können Sie outSequence verwenden und überprüfen? d.h

<outSequence> 
    <property name="messageType" value="application/json" scope="axis2"/> 
    <send/> 
</outSequence> 
0

Überprüfen Sie bitte, dass Sie die Binärnachricht Builder/Formatierer in /repository/conf/axis2/axis2.xml aktiviert haben. Wenn dies der Fall ist, deaktivieren Sie den Builder für binäre Nachrichten, und verwenden Sie die standardmäßigen Builder/Formatierer für Nachrichten, und versuchen Sie es erneut.

Verwandte Themen