Правильный синтаксис с использованием 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, куда вы звоните.

это то, что сработало для меня, я надеюсь, что это помогает таким новичкам, как я. Спасибо всем.

Другие вопросы по тегам