Как преобразовать тело JSON в текст в WSO2 - PullRequest
1 голос
/ 16 мая 2019

Я пытаюсь создать строковое свойство, содержащее JSON, который я отправляю в теле.

Проблема в том, что если я отправлю json с заголовком 'Content-Type': 'text / plain', идеально. Но если я отправлю его с Content-Type: application / json, я думаю, что он попытается преобразовать его в xml.

Это для сервера Linux, wso2 EI 6.4.0

это JSON, который я отправляю:
{ "hello": "isJson" }

и с заголовком Content-Type: 'application / json' в строке я получаю только это: isJson

но когда я делаю запрос с Content-Type: 'text / plain', результат будет следующим: {"hello": "isJson"}.

Как получить тот же результат с Content-Type: application / json?

Спасибо

1 Ответ

1 голос
/ 16 мая 2019

Это происходит потому, что EI внутренне представляет полезную нагрузку в формате XML. Когда вы вызываете с использованием text / plain EI, поместите его в два тега 'text' следующим образом

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><text xmlns="http://ws.apache.org/commons/ns/payload">{ "hello": "isJson" }</text></soapenv:Body></soapenv:Envelope>

Обратите внимание, что {"hello": "isJson"} сохраняется.

При вызове с использованием application / json EI преобразует его в XML следующим образом

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><hello>isJson</hello></jsonObject></soapenv:Body></soapenv:Envelope>

Когда вы обогащаете тело до свойства, два разных представления обогащаются до тела, как показано выше.

Мы внесли некоторые улучшения в этот поток сообщений, введя встроенную поддержку JSON для посредника Enrich. Вы можете получить ожидаемое поведение в следующем выпуске EI 6.5.0.

...