2016-01-14 3 views
0

У меня есть api, разработанный и потребляющий этот api в потоке мула.
Но когда я тестирую хром: почтальон, я получаю следующую ошибку.Как отправить полезную нагрузку json при потреблении отдыха api

Message payload is of type: BufferInputStream 

Так что я попытался войти в сообщение и ниже я получил

[email protected] 

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

<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> 

ответ

0

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

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

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

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

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

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

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

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

+0

Спасибо за отзыв Саймон Карлссон. После добавления объекта к переносу строки я могу видеть полезную нагрузку json. Но из api я получаю исключение нулевого указателя, например «Не знаю, как разбирать org.mule.transport.NullPayload». Почему нулевая полезная нагрузка идет на api. –

+0

@ mule-user проверить мое редактирование! :) –

+0

Отлично работает. Я сделал два изменения HTTP-прослушиватель: responseStreamingMode = «ВСЕГДА» HTTP-запрос: sendBodyMode = «ВСЕГДА» Его работа отлично прекрасна сейчас –

Смежные вопросы