Как отправить полезную нагрузку json при использовании API отдыха

У меня есть разработанное API, и я хочу использовать этот API в потоке мулов.
Но когда я тестирую из chrome:postman, я получаю следующую ошибку.

Message payload is of type: BufferInputStream

Итак, я попытался зарегистрировать сообщение, и ниже я получил

org.glassfish.grizzly.utils.BufferInputStream@e2ed077

Итак, в основном мое требование заключается в том, как я могу передать полезную нагрузку json моему API. Ниже мой фрагмент кода.

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8083" doc:name="HTTP Listener Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="localhost" port="8082" doc:name="HTTP Request Configuration">
    <http:basic-authentication username="sa" password="sa"/>
</http:request-config>
<flow name="get-response-container-storeFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/testapi" doc:name="HTTP"/>
    <logger message="******************Executed Test_Container_Store_API*******************#[payload]" level="INFO" doc:name="Logger"/>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    <http:request config-ref="HTTP_Request_Configuration" path="/apie" method="POST" sendBodyMode="NEVER" doc:name="HTTP">
    </http:request>

person mule-user    schedule 14.01.2016    source источник


Ответы (1)


Вы можете устранить первую ошибку с помощью регистратора, добавив <object-to-string-transformer/> в качестве первого обработчика сообщений после вашего http:inbound (или, что более важно, перед вашим регистратором).

Если вы хотите включить тело в запрос, вы должны удалить атрибут sendBodyMode="NEVER" из вашего запроса.

Из документов MuleSoft:

По умолчанию методы GET, HEAD и OPTIONS отправляют HTTP-запросы с пустым телом, а полезная нагрузка сообщения Mule вообще не используется. Остальные методы отправляют полезные данные сообщения в качестве тела запроса. Если вам нужно изменить это поведение по умолчанию, вы можете указать в запросе атрибут sendBodyMode с одним из следующих возможных значений:

АВТО (по умолчанию): поведение зависит от метода. Тело не отправляется для GET, OPTIONS и HEAD, иначе оно отправляется.

ВСЕГДА: тело отправляется всегда.

НИКОГДА: тело никогда не отправляется.

Это означает, что, поскольку для этого атрибута установлено значение never, ваша полезная нагрузка никогда не будет включена в тело запроса.

person Simon Karlsson    schedule 14.01.2016
comment
Спасибо за ответ Саймон Карлссон. После добавления объекта в передачу строки я могу увидеть свою полезную нагрузку json. Но от API я получаю исключение нулевого указателя, например, «Не знаю, как анализировать org.mule.transport.NullPayload». Почему нулевая полезная нагрузка отправляется в API. - person mule-user; 14.01.2016
comment
Совершенствуйте свою работу. Я сделал два изменения HTTP-прослушиватель: responseStreamingMode=ALWAYS HTTP-запрос: sendBodyMode=ALWAYS Теперь он работает отлично - person mule-user; 15.01.2016