Mule Http connector выдает BufferInputStream, который при преобразовании выдает значение мусора

#java #spring #mule

#java #весна #мул

Вопрос:

Я использую mule (версия: 6.2.4) и из HTTP-соединителя пытаюсь вызвать облако FCM. Весь код работает, но когда я получаю resoponse от HTTP-соединителя, как показано ниже :

 org.glassfish.grizzly.utils.BufferInputStream@445d12b5
  

И когда я попытался сделать ByteArray для Object и Object для json после HTTP, то получил некоторое значение мусора. как показано ниже:

 INFO  2020-09-23 16:19:33,558 [[firebase-google-push-api-proxy].firebase-google-push-api-proxyFlow.01] org.mule.api.processor.LoggerMessageProcessor: Resp of firebase =  ?
? E?2?]N?:z??LlL
??
?{?@V???????Y?w?!9G?c?E??DB@:s??????@2p^??MU?????_,??o??`zc???>8???^8?????
  

Даже я пытался прочитать это в java connector, но все равно получил то же значение мусора.
Кто-нибудь может помочь, что происходит не так.

Ниже приведен мой код :

 <?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:validation="http://www.mulesoft.org/schema/mule/validation" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/validation http://www.mulesoft.org/schema/mule/validation/current/mule-validation.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
    <validation:config name="Validation_Configuration" doc:name="Validation Configuration"/>
    <http:request-config name="HTTP_Firebase_Request" protocol="HTTPS" host="fcm.googleapis.com" port="443" responseTimeout="600000" doc:name="HTTP Request Configuration" connectionIdleTimeout="600000">
        <http:proxy host="setting here my proxy" port="8080"/>
    </http:request-config>
    <sub-flow name="firebase-initSub_Flow">
        <validation:is-not-null config-ref="Validation_Configuration" value="#[flowVars.jsonBody]" doc:name="Validation" message="Body Should not be null or Empty"/>
        <logger message="amp;quot;Authorization =amp;>amp;quot;    #[flowVars.authorization]" level="INFO" doc:name="Print authorizatoin header"/>
        <set-payload value="#[flowVars.jsonBody]" doc:name="Set Payload"/>
        <http:request config-ref="HTTP_Firebase_Request" path="/fcm/send" method="POST" doc:name="HTTP">
            <http:request-builder>
                <http:header headerName="Authorization" value="#[flowVars.authorization]"/>
                <http:header headerName="Content-Type" value="application/json"/>
            </http:request-builder>
        </http:request>
        <logger message="Resp of firebase =  #[payload]" level="INFO" doc:name="Logger"/>


    </sub-flow>
</mule>
  

Комментарии:

1. Какая это версия Mule? Также попробуйте включить протоколирование проводов HTTP ( help.mulesoft.com/s/article/How-to-Enable-HTTP-Wire-Logging ), чтобы подтвердить, что фактическое сообщение является двоичным.

2. Используя версию: 6.2.4

3. Это версия Anypoint Studio, а не среды выполнения Mule, используемой для выполнения приложения. Кстати, текущая версия Studio — 6.6.5, которую я настоятельно рекомендую вам загрузить, потому что она содержит очень значительное количество исправлений стабильности и улучшений по сравнению с 6.2.4.

4. Спасибо. Я мог бы решить это путем отладки. Ошибка была в моем коде, поскольку я изменял тело и заголовки запроса перед переходом на HTTP. Спасибо, что посмотрели это.