2017-02-03 2 views
0

Ich habe ein benutzerdefiniertes Achsenmodul geschrieben, um die gesamte Kommunikation in meinem WSO2 ESB zu erkennen. Ich habe es in allen Phasen registriert - alles funktioniert wie erwartet, wenn es um die SOAP-Kommunikation geht.WSO2 ESB Benutzerdefiniertes Achsenmodul JSON Nutzlast in MessageContext

Ich kann jedoch die JSON-Nutzdaten einer in WSO2 ESB definierten und aufgerufenen REST-API nicht abrufen. Die MessageContext.getEnvelope gibt einen leeren Body zurück, obwohl ich eine JSON-Payload sehen kann, die in meinem REST-Client zurückgegeben wird.

Grundsätzlich sieht mein Code wie folgt aus:

public InvocationResponse invoke(MessageContext msgContext) throws AxisFault { 
      String logId = msgContext.getLogCorrelationID(); 
      long currentTimestamp = System.currentTimeMillis(); 

      logEntry.setId(logId); 

      if(msgContext.isDoingREST()) { 
       logEntry.setFormat(ILogEntry.FORMAT_REST); 
       logEntry.setPayload(String.valueOf(msgContext.getEnvelope())); 
      } else if(msgContext.isDoingMTOM()) { 
       logEntry.setFormat(ILogEntry.FORMAT_MTOM); 
      } else if(msgContext.isDoingSwA()) { 
       logEntry.setFormat(ILogEntry.FORMAT_SWA); 
      } else { 
       logEntry.setFormat(ILogEntry.FORMAT_SOAP); 
       JSONObject json = XML.toJSONObject(String.valueOf(msgContext.getEnvelope())); 
       logEntry.setPayload(String.valueOf(json)); 
      } 
    } 

Ist die JSON Nutzlast innerhalb org.apache.axis2.context.MessageContext in einer anderen Art und Weise als SOAP verwaltet?

Wie kann ich es abrufen?

Peter

Antwort

0

Sieht aus wie du bist vor dem gleichen Problem wie hier beschrieben.

Will JSON based REST - ESB - REST communication build AXIS 2 XML MessageContext

+0

Hallo - danke für die Antwort. Ich habe mir das vorher angesehen, bevor ich diese Frage gestellt habe. Ich bekomme NULL, wenn ich versuche, getProperty ("JSON_STREAM") aufzulösen. Ich stieß auch auf einen Beitrag, der "JSON_STRING" als zu betrachtende Eigenschaft erwähnte, aber das tat es auch nicht ... :( –

+0

Vielleicht hilft das Folgende, aber ich bin mir nicht sicher. // Abrufen der Json-Payload zum String Zeichenfolge jsonPayloadToString = JsonUtil.jsonPayloadToString (((Axis2MessageContext) -Kontext) .getAxis2MessageContext()); // Ein json-Objekt erstellen JSONObject jsonBody = neues JSONObject (jsonPayloadToString); –