2016-06-20 4 views
0

ich einen einfachen REST haben HTTPS GET ist die uri davon wie folgt aus:"Remotely geschlossen", wenn ich versuche REST mit HTTPS in Mule zu senden

https://mytest.test:443/nccpointshop/REST/giftcard/giftcards/list/currency/SEK

, die perfekt funktioniert in einem Browser ausgeführt werden , Postman, etc. Mit Mule 3.8 HTTP wähle ich den uri aus der RAML generataed Spezifikation, setzen uri-param und immer noch eine Ausnahme ich erhalte:

DEBUG 2016-06-28 16:38:35,321 [[svc0014_loyalty].http.requester.ODP_Request_Configuration(1) SelectorRunner] com.ning.http.client.providers.grizzly.AsyncHttpClientFilter: REQUEST: HttpRequestPacket (
 
    method=GET 
 
    url=/nccpointshop/REST/giftcard/giftcards/list/currency/SEK 
 
    query=null 
 
    protocol=HTTP/1.1 
 
    content-length=-1 
 
    headers=[ 
 
     Host=correct.host:443 
 
     User-Agent=AHC/1.0 
 
     Connection=keep-alive 
 
     Accept=*/*] 
 
) 
 
DEBUG 2016-06-28 16:38:35,322 [[svc0014_loyalty].http.requester.ODP_Request_Configuration(1) SelectorRunner] org.mule.module.http.internal.HttpMessageLogger: REQUESTER 
 
GET /nccpointshop/REST/giftcard/giftcards/list/currency/SEK HTTP/1.1 
 
Host: correct.host:443 
 
User-Agent: AHC/1.0 
 
Connection: keep-alive 
 
Accept: */* 
 

 

 
DEBUG 2016-06-28 16:38:35,498 [[svc0014_loyalty].http.requester.ODP_Request_Configuration.worker(8)] com.ning.http.client.AsyncCompletionHandlerBase: Remotely closed 
 
java.io.IOException: Remotely closed 
 
DEBUG 2016-06-28 16:38:35,520 [[svc0014_loyalty].svc0014_loyalty-httpListenerConfig.worker.02] com.mulesoft.mule.debugger.server.DebuggerMuleNotificationHandlerImpl: MESSAGE_PROCESSOR_POST_INVOKE -> Path /get:\/giftcards:svc0014_loyalty-config/processors/2 
 
DEBUG 2016-06-28 16:38:37,327 [[svc0014_loyalty].Mule.01] com.mulesoft.mule.debugger.server.DebuggerMuleNotificationHandlerImpl: Notification 2001 was received ef4625b0-3d3d-11e6-998f-448500a727fa 
 
ERROR 2016-06-28 16:38:37,329 [[svc0014_loyalty].svc0014_loyalty-httpListenerConfig.worker.02] org.mule.module.apikit.MappingExceptionListener: 
 
******************************************************************************** 
 
Message    : Error sending HTTP request. Message payload is of type: NullPayload 
 
Type     : org.mule.api.MessagingException 
 
Code     : MULE_ERROR-29999 
 
Payload    : {NullPayload} 
 
JavaDoc    : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html 
 
******************************************************************************** 
 
Exception stack is: 
 
1. Remotely closed (java.io.IOException) 
 
2. java.io.IOException: Remotely closed (java.util.concurrent.ExecutionException) 
 
    org.glassfish.grizzly.impl.SafeFutureImpl$Sync:349 (null) 
 
3. java.util.concurrent.ExecutionException: java.io.IOException: Remotely closed (java.io.IOException) 
 
    org.mule.module.http.internal.request.grizzly.GrizzlyHttpClient:245 (null) 
 
4. Error sending HTTP request. Message payload is of type: NullPayload (org.mule.api.MessagingException) 
 
    org.mule.module.http.internal.request.DefaultHttpRequester:287 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) 
 
******************************************************************************** 
 
Root Exception stack trace: 
 
java.io.IOException: Remotely closed 
 

 
********************************************************************************

Ich füge ein Bild davon, wie meine Konfiguration sieht aus wie

enter image description here

+0

Können Sie bitte Ihre Socket-Konfigurationsdetails zeigen –

+0

Versuchen Sie das Timeout oder Keep-Alive = aktiv zu erhöhen? – star

+0

Sie geben an, dass Sie das Problem haben, wenn Sie die REST-URL aufrufen, nachdem Sie mit einer RAML-Datei Datenflüsse generiert haben. Wenn dies der Fall ist, sollte Ihre HTTPS-Connector-Konfiguration z./api/v1/* weil es allen Flüssen gemeinsam ist. Der Pfad zu Ihrer Währung GET mit dem Parameter {Währung} URI macht für mich keinen Sinn. Haben Sie Ihre Flüsse mit einer RAML-Datei generiert? Wenn ja, zeigen Sie uns den Abschnitt RAML für den Währungsabschnitt GET. –

Antwort

0

Die Sache mit Mule HTTP-Anschluss ist, dass es Host und Port von der zugehörigen Konfiguration immer als Header fügt hinzu: headers = [ Host = correct.host: 443

Einige Systeme erlauben das nicht, sie akzeptieren das Hinzufügen des Ports nicht (in unserem Fall wird der Port im Backend-System dynamisch zugewiesen). So , diese Anfrage: https://correct.host:443/nccpointshop/REST/giftcard/giftcards/list/currency/SEK

ist ungültig, aber dies ist gültig: https://correct.host/nccpointshop/REST/giftcard/giftcards/list/currency/SEK

Das ist schwer zu erkennen und zu fangen, als Postbote und Chrome beide richtig Anfragen senden. Ich empfehle ein anderes Tool wie SoapUI zu benutzen (ich habe es bemerkt). Allerdings gibt es eine Möglichkeit, den Wert für die „Host“ in den Headern wie diese zu überschreiben:

<http:request config-ref="HTTP_Request_Configuration1" path="/nccpointshop/REST/giftcard/giftcards/list/currency/SEK" method="GET" doc:name="Copy_of_HTTP"> 
     <http:request-builder> 
      <http:header headerName="Host" value="correct.host"/> 
     </http:request-builder> 
    </http:request> 
Verwandte Themen