2017-01-19 1 views
0

ich ein Kamel Route habe ähnlich wie:nicht in der Lage externen HTTP-Dienst über Apache Camel zu schlagen

<camel:routeContext xmlns="http://camel.apache.org/schema/spring"> 
<route> 
    <from uri="restlet:/v1/authentication/initiate?restletMethod=post&amp;restletBinding=#queryStringToHeadersRestletBinding"/> 
    <to uri="http://xx.xx.xx.xx:20015/login"></to> 
</route> 

Jetzt, nach der Anforderung von Restlet empfangen, das Kamel Prozessor anstatt zu http://xx.xx.xx.xx:20015/login versucht zu gehen zu treffen http://localhost/v1/authentication/initiate, die ich 404 HTTPOperation wie ausgefallen ist nicht vorhanden und somit erhalten:

Stacktrace 
--------------------------------------------------------------------------------------------------------------------------------------- 
org.apache.camel.component.http.HttpOperationFailedException: HTTP operation failed invoking http://localhost/v1/authentication/initiate with statusCode: 404 
    at org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:228) ~[camel-http-2.12.4.jar:2.12.4] 
    at org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:156) ~[camel-http-2.12.4.jar:2.12.4] 
    at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[camel-core-2.12.4.jar:2.12.4] 

ich in der Lage bin, die Routen an anderen Orten zu verwenden succ eifrig. Aber weiß nicht, warum es nicht die beabsichtigte Ziel-URL in dieser Routendefinition trifft. Bitte helfen.

+0

Haben Sie setzen die 'Exchange.HTTP_URI' Header zuvor in der Strecke? Oder ist es das, was Restlet macht? Das würde den Wert der in der Route angegebenen uri überschreiben. –

+0

Entfernen Sie die CamelHTTP-Header, die beim Aufrufen des HTTP-Endpunkts durch das Restlet zu Störungen führen können. Siehe diese FAQ: http://camel.apache.org/how-to-remove-the-http-protocol-headers-in-the-camel-message.html –

+0

Ja, der CamelHTTPHeader verursachte das Problem, das auf den Restlet-URL Entfernen der Header funktioniert: '' Danke an alle! –

Antwort