Я настроил API, который использует OAUth Mediator для генерации токена доступа во внешнем бэкэнде. Я тестирую конечную точку, используя cURL. От включения проводных журналов я вижу, что сообщение от cURL получено правильно, затем APIM использует внешний бэкэнд, который отвечает с желаемой информацией .
Однако я получаю две ошибки:
org.apache.axis2.AxisFault: Payload could not be written as JSON.
.
.
.
org.apache.axis2.AxisFault: Failed to submit the response
cURL никогда не получает отклик и время ожидания (пустой ответ от сервера).
Пожалуйста, смотрите прикрепленное изображение Carbon log.
На что следует обратить внимание:
- Внешний API-интерфейс отвечает типом контента "application / hal-json". Это настраивается в моем API путем установки соответствующего поля Consumes
Axis2.xml был отредактирован для включения следующих строк в соответствующие разделы:
<messageBuilder contentType="application/hal+json" class="org.apache.axis2.json.JSONStreamBuilder"/>
.
.
.
<messageFormatter contentType="application/hal+json" class="org.apache.synapse.commons.json.JsonStreamFormatter"/>
У меня есть две политики посредничества
In:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="secuenciaPrueba" statistics="enable" trace="enable" xmlns="http://ws.apache.org/ns/synapse">
<log description="" level="full"/>
<property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
<class name="org.wso2.apim.mediators.oauth.OAuthMediator">
<property name="endpointId" value="EP1"/>
</class>
</sequence>
Out:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="secuenciaPruebaOut" statistics="enable" trace="enable" xmlns="http://ws.apache.org/ns/synapse">
<log level="full">
<property name="OUT_MESSAGE" value="OUT_MESSAGE"/>
</log>
<log level="custom">
<property expression="get-property('ENDPOINT_PREFIX')" name="Endpoint"/>
<property expression="get-property('transport', 'Content-Type')" name="Content-Type"/>
<property expression="get-property('msgID')" name="Correlation_Id"/>
</log>
<property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
</sequence>
Мне нужно вернуть данные JSON вcURL, чего здесь не хватает?