Правильный синтаксис с использованием camel-http4 для вызова https
Я просто не могу заставить этот HTTP4 работать. Я пытаюсь сделать запрос POST к сайту, который https. Однако, кажется, ничего не работает. Может кто-нибудь сказать мне, как правильно выполнить POST HTTPS с HTTP4? Большое спасибо, действительно изо всех сил. просто нужно знать, что я делаю не так... что-то простое всегда поворачивает на юг.
Я пробовал.
http4://d1e5-95edc7a5cef2-uaa.run.aws-usw02-pr.ice.io:443/oauth/token
https://d1e5-95edc7a5cef2-uaa.run.aws-usw02-pr.ice.io/oauth/token
http4://d1e5-95edc7a5cef2-uaa.run.aws-usw02-pr.ice.io/oauth/token
https://d1e5-95edc7a5cef2-uaa.run.aws-usw02-pr.ice.io:443/oauth/token
http4:https://d1e5-95edc7a5cef2-uaa.run.aws-usw02-pr.ice.io:443/oauth/token
но ничего не работает?
2 ответа
Компонент camel-http4 подходит для того, чего я пытаюсь достичь. Мне нужно только произвести до конечной точки. Я не пытаюсь выставить веб-сервис. но спасибо за ваш ответ.
верблюд-http4 против верблюжьей пристани
Вы можете производить только на конечные точки, созданные компонентом camel-http4. Поэтому он никогда не должен использоваться в качестве входа в ваши верблюжьи маршруты. Чтобы связать / предоставить конечную точку HTTP через HTTP-сервер в качестве входных данных для маршрута Camel, используйте вместо этого компонент Jetty.
Я обнаружил, что правильный способ определения конечной точки HTTP4
http4:hostname[:port][/resourceUri][?options]
у меня возникла проблема с динамическим маршрутом toD и заменой параметра Exchange.HTTP_URI, это не работает должным образом.
поэтому, используя URI, такие как
http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws-us.ice.io:443/oauth/token
работает. механизм не работает.
Exchange.HTTP_URI
URI для вызова. Значение этой опции переопределит существующий URI, который установлен непосредственно в конечной точке. Это не то же самое, что URI конечной точки Camel, где вы можете настроить параметры конечной точки, такие как безопасность и т. Д. Этот заголовок не поддерживает это, это только URI HTTP-сервера.
<route
id="core.getToken.route"
autoStartup="true" >
<from id="getToken" ref="getToken" />
<process ref="uAARequestTokenProcessor" />
<!-- <log message="Message after uAARequestTokenProcessor: ${body}" loggingLevel="INFO"/> -->
<setHeader headerName="CamelHttpMethod">
<constant>POST</constant>
</setHeader>
<!-- <setHeader headerName="CamelHttpUri">
<simple>${header.TOKENURL}</simple>
</setHeader> -->
<log message="HTTP4 POST headers: ${headers}" loggingLevel="DEBUG"/>
<log message="HTTP4 POST body: ${body}" loggingLevel="DEBUG"/>
<to uri="http4://d1e-uaa.run.aws-usw02-pr.ice.io:443/oauth/token?throwExceptionOnFailure=false" />
<toD uri="${header.TOKENURL}?throwExceptionOnFailure=false" />
<log message="After HTTP4 POST: ${body}" loggingLevel="INFO"/>
<to uri="{{accessToken}}" />
</route>
поэтому для меня прямо сейчас установка Exchange.HTTP_URI не переопределяет URI, определенный в конечной точке
где Exchange.HTTP_URI определяется как: TOKENURL=http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws-usw02-pr.ice.io:443/oauth/token
это то, что не работает. Благодарю.
Пожалуйста, используйте bridgeEndpoint=true, чтобы вы могли выйти за пределы сервера
Хорошо, я надеюсь, что это кому-то поможет, решение было в 2 раза. Во-первых, прокси-сервер не получил подтверждения из-за ведущего протокола def, http:// Я использовал только IP-адрес и кононическое имя без http: //, и мне удалось получить ошибку тайм-аута шлюза 504. поэтому конечная точка HTTP4 работает так, как она была настроена на
http4://myhost:443/path
http4://uaa-svc-prod.app-api.aws-usw02-pr.io:443/oauth/token
Я смог заставить запрос работать, сначала сделав жесткую конечную точку
<to uri="http4://uaa-svc-prod.app-api.aws-usw02-pr.io:443/oauth/token?throwExceptionOnFailure=false" />
поэтому конечная точка http4 переопределить, установив
m.setHeader(Exchange.HTTP_URI, tokenUrl);
работал.
Затем я попытался использовать настройку XML, которую он переопределил в маршруте.
<log message="HTTP4 POST headers: ${headers}" loggingLevel="DEBUG"/>
<setHeader headerName="CamelHttpUri">
<simple>${header.TOKENURL}?throwExceptionOnFailure=false</simple>
</setHeader>
<to uri="http4://uaa-svc-prod.app-api.aws-usw02-pr.io:443/oauth/token?throwExceptionOnFailure=false" />
это сработало также.:) однако я все еще получал ошибку тайм-аута 504 шлюзов.
Я пытался использовать https:// URI для переопределения URI
https://uaa-svc-prod.app-api.aws-usw02-pr.io/oauth/token
и конечная точка http4:// была переопределена с помощью https:// URI, и теперь я получаю CamelHttpResponseCode=401, CamelHttpResponseText=Unauthorized
Итак, он работает сейчас, счастливый, счастливый, радость, радость... В заключение не включайте протокол http: // def в настройку прокси. Используйте либо IP, либо кононическое имя.
<camelContext
id="com.ge.digital.passthru.coreCamelContext"
trace="true"
xmlns="http://camel.apache.org/schema/blueprint"
allowUseOriginalMessage="false"
streamCache="true"
errorHandlerRef="deadLetterErrorHandler" >
<properties>
<property key="http.proxyHost" value="PITC-Zscaler.proxy.corporate.america.com"/>
<property key="http.proxyPort" value="80"/>
</properties>
при определении конечной точки HTTP4:// используйте синтаксис
http4:hostname[:port][/resourceUri][?options]
и URI, установленный Exchange.HTTP_URI для обработки конечной точки def, содержит https://myhost/path, куда вы звоните.
это то, что сработало для меня, я надеюсь, что это помогает таким новичкам, как я. Спасибо всем.