правильный синтаксис с использованием camel-http4 для вызова https - PullRequest
0 голосов
/ 25 апреля 2018

Я просто не могу заставить этот HTTP4 работать.Я пытаюсь сделать запрос POST к сайту, который https.Однако, кажется, ничего не работает.Может кто-нибудь сказать мне, как правильно выполнить HTTPS POST с 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 ]

0 голосов
/ 25 апреля 2018

ок, надеюсь, это кому-нибудь поможет, решение было в 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, и теперь я получаюa CamelHttpResponseCode = 401, CamelHttpResponseText = Unauthorized

, поэтому он работает сейчас, happy happy joy joy ... в заключение не включайте определение протокола http: // в настройку прокси.Используйте либо 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 для обработки конечной точки, содержит https://myhost/pathкуда ты звонишь.

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

0 голосов
/ 25 апреля 2018

Camel-http4 компонент подходит для того, что я пытаюсь достичь.Мне нужно только произвести до конечной точки.Я не пытаюсь выставить веб-сервис.но спасибо за ваш ответ.

camel-http4 против camel-jetty

Вы можете производить только на конечные точки, созданные компонентом 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

это то, что не работает.Благодарю.

...