Ошибка при использовании службы REST через HTTPs

#rest #http #https #mule #connector

#rest #http #https #mule #соединитель

Вопрос:

У меня есть простое сообщение REST HTTPS, его uri выглядит следующим образом: https://paymentservicestest.informa.com/mcas_services.asp ?

который отлично работает для запуска в браузере, Postman и т. Д. С помощью Mule 3.8 HTTP я выбираю uri из сгенерированной спецификации RAML, устанавливаю uri-param и все равно получаю исключение и код ниже.

  ERROR 2016-10-11 16:16:52,944 [[tstconnection].HTTP_Listener_Configuration.worker.01] org.mule.module.http.internal.request.DefaultHttpRequester: Remote host closed connection. Possible SSL/TLS handshake issue. Check protocols, cipher suites and certificate set up. Use -Djavax.net.debug=handshake for further debugging.
 ERROR 2016-10-11 16:16:53,025 [[tstconnection].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy: 
 ********************************************************************************
 Message               : Error sending HTTP request.
 Payload               : {NullPayload}
 Payload Type          : org.mule.transport.NullPayload
 Element               : /tstconnectionFlow/processors/1 @ tstconnection:tstconnection.xml:14 (HTTP)
 Element XML           : <http:request config-ref="HTTP_Request_Configuration" path="/mcas_services.asp" method="POST" doc:name="HTTP">
                         <http:request-builder>
                         <http:query-param paramName="username" value="XXXXX"></http:query-param>
                         <http:query-param paramName="password" value="XXXXX"></http:query-param>
                         <http:query-param paramName="method" value="XXXXX"></http:query-param>
                         <http:query-param paramName="source" value="XXXXX"></http:query-param>
                         <http:query-param paramName="cardtype" value="XXXXX"></http:query-param>
                         <http:query-param paramName="currency" value="XXXXX"></http:query-param>
                         </http:request-builder>
                         </http:request>
 --------------------------------------------------------------------------------
 Root Exception stack trace:
 java.io.IOException: Remotely closed
My sample Code is :

 <?xml version="1.0" encoding="UTF-8"?>
 
 <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" 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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
     <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="2020" doc:name="HTTP Listener Configuration"/>
     <http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="paymentservice.informa.com" port="443" connectionIdleTimeout="300000" responseTimeout="300000" doc:name="HTTP Request Configuration" />
     <flow name="tstconnectionFlow">
         <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
         <logger message="sampleTest" level="INFO" doc:name="Logger"/>
     <http:request config-ref="HTTP_Request_Configuration" path="/mcas_services.asp" method="GET" doc:name="HTTP">
            <!--  <http:request-builder>
                 <http:query-param paramName="qParams1" value="#[flowVars.qParams]"/>
             </http:request-builder> -->
                <http:request-builder>
                 <http:query-param paramName="username" value="XXXXXX"/>
                 <http:query-param paramName="password" value="XXXXXX"/>
                 <http:query-param paramName="method" value="XXXXXXX"/>
                 <http:query-param paramName="source" value="XXXXX"/>
                 <http:query-param paramName="cardtype" value="XXXX"/>
                 <http:query-param paramName="currency" value="XXX"/>
 
             </http:request-builder> 
         </http:request>
         <logger level="INFO" doc:name="blankResponse"/>
         <logger message="Reponse: #[payload]" level="INFO" doc:name="Logger"/>
     </flow>
 </mule>  

Ответ №1:

Похоже, у вас опечатка в вашем URI

Из вашего сообщения я вижу, что фактический URI должен быть:

https://paymentservices.informa.com/

в то время как в вашей конфигурации вы вызываете следующий URI:

https://paymentservice.informa.com/

убедитесь, что вы включили «s» в «services», это должно, по крайней мере, выполнить успешный запрос на правильный сервер.

Измените свой HTTP_Request_Configuration на:

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

<http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="paymentservices.informa.com" port="443" connectionIdleTimeout="300000" responseTimeout="300000" doc:name="HTTP Request Configuration" />
...

 </mule>