#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. Спасибо, что посмотрели это.