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
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 ... :( –
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); –