Я написал пользовательский модуль Axis, чтобы вынюхивать все сообщения в моем WSO2 ESB. Я зарегистрировал его на всех этапах - все работает так, как ожидалось, когда речь заходит об обмене SOAP.WSO2 ESB Custom Axis Module JSON Полезная нагрузка в MessageContext
Однако я не могу получить полезную нагрузку JSON API-интерфейса REST, определенного и вызываемого в WSO2 ESB. MessageContext.getEnvelope возвращает пустое тело, даже если я вижу полезную нагрузку JSON, возвращаемую моим клиентом REST.
В основном мой код выглядит следующим образом:
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));
}
}
удалось ли полезной нагрузки JSON в org.apache.axis2.context.MessageContext
в иной форме, чем SOAP?
Как его получить?
Питер
Hi - спасибо, что ответили. Я изучил это, прежде чем публиковать этот вопрос. Я получаю NULL при попытке решить getProperty («JSON_STREAM»). Я также наткнулся на сообщение, в котором упоминается «JSON_STRING» как свойство, на которое нужно смотреть, но это не делало этого ... :( –
Может быть, следующее помогает, но я не уверен. // Получение полезной нагрузки json в строку String jsonPayloadToString = JsonUtil.jsonPayloadToString ((Axis2MessageContext)) .getAxis2MessageContext()); // Сделать объект json JSONObject jsonBody = новый JSONObject (jsonPayloadToString); –