Https camel-http4 post不工作,我没有收到任何响应

Https camel-http4 post不工作,我没有收到任何响应,https,apache-camel,camel-http,Https,Apache Camel,Camel Http,这是我的第一个骆驼式HTTP4实现,遇到了问题。我没有得到任何回应,好像到URI的路由是错误的,消息是这样的???它不会发出HTTP4呼叫吗 使用camel版本2.17.0.redhat-630310,java 8 我的pom有依赖性 <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-http4</artifactId&

这是我的第一个骆驼式HTTP4实现,遇到了问题。我没有得到任何回应,好像到URI的路由是错误的,消息是这样的???它不会发出HTTP4呼叫吗

使用camel版本2.17.0.redhat-630310,java 8

我的pom有依赖性

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-http4</artifactId>
    </dependency>
在我看来,除非HTTP4的头不同,否则不会设置Exchange.HTTP_URI或HTTP头?但我在关注HTTP4文档

发生的事情是,在处理器内部,我尝试读取HTTP头,设置后显示它们为空

Entering UAA Request Token Processor: start
ClientId: ingestor.57e72dd3-6f9e-4931-b4bc-cd04eaaff3e3.1f7dbe12-2372-439e-8104-06a5f4098ec9
userName: 5c0642fe-a495-44db-93f7-67056fa2c061_ingestor
password: 154f0252d166f27b5e21ef171b02a79f41a0daf3
tokenUrl: http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.predix-uaa.run.aws-usw02-pr.ice.predix.io/oauth/token
Processing UAA token request for Client ID: ingestor.57e72dd3-6f9e-4931-b4bc-cd04eaaff3e3.1f7dbe12-2372-439e-8104-06a5f4098eff9 and User Name: 5c0232fe-a495-44db-94f7-67156fa2c061_ingestor
Before Base64 encryption of Client ID: ingestor.57e72dd3-6f9e-4931-b4bc-cd04eaaff3e3.1f7dbe12-2372-439e-8104-06a5f4098eff9
after Base64 encryption of Client ID: Basic aW5nZXN0b3IuNTdlNzJkZDMtNmY5ZS00OTMxLWI0YmMtY2QwNGVhYWZmM2UzLjFmN2RiZTEyLTIzNzItNDM5ZS04MTA0LTA2YTVmNDA5OGVjOQ==
HTTP BODY: grant_type=password&username=5c0232fe-a495-44db-94f7-67156fa2c061_ingestor&password=154f0252d166f27b5e21ef171b02beebop
Exchange.HTTP_URI: null
Exchange.CONTENT_TYPE: null
Authorization: Basic aW5nZXN0b3IuNTdlNzJkZDMtNmY5ZS00OTMxLWI0YmMtY2QwNGVhYWZmM2UzLjFmN2RiZTEyLTIzNzItNDM5ZS04MTA0LTA2YTVmNDA5OGVjOQ==
Exiting UAA Request Token Processor: Finish
堆栈跟踪显示头,但不显示为EXCHANGE.HTTP\u URI

    2018-04-23 13:17:29,203 | INFO  | ile://ge-ip/core | Tracer                           | 231 - org.apache.camel.camel-core - 2.17.0.redhat-630310 | ID-alphprdfuse2i-44477-1524503724804-3-52 >>> 
(core.getToken.route) setHeader[CamelHttpMethod, POST] --> http4://predhost <<< Pattern:InOnly, 
Headers:{Authorization=Basic aW5nZXN0b3IuNTdlNzJkZDMtNmY5ZS00OTMxLWI0YmMtY2QwNGVhYWZmM2UzLjFmN2RiZTEyLTIzNzItNDM5ZS04MTA0LTA2YTVmNDA5OGVjOQ==, 
breadcrumbId=ID-alphprdfuse2i-44477-1524503724804-3-50, 
CamelFileAbsolute=false, 
CamelFileAbsolutePath=/app/iprctest/jboss-fuse-6.3.0.redhat-310/ge-ip/core/Noble/nst_dge-1_2018-04-10_19-55-10.CSV, CamelFileLastModified=1524503800000, 
CamelFileLength=3706, CamelFileName=Noble/nst_dge-1_2018-04-10_19-55-10.CSV, CamelFileNameConsumed=Noble/nst_dge-1_2018-04-10_19-55-10.CSV, CamelFileNameOnly=nst_dge-1_2018-04-10_19-55-10.CSV, 
CamelFileNameProduced=ge-ip/upload/Noble/nst_dge-1_2018-04-10_19-55-10.CSV, CamelFileParent=ge-ip/core/Noble, 
CamelFilePath=ge-ip/core/Noble/nst_dge-1_2018-04-10_19-55-10.CSV, CamelFileRelativePath=Noble/nst_dge-1_2018-04-10_19-55-10.CSV, CamelHttpMethod=POST, 
CamelHttpUri=http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.pred-uaa.run.aws-usw02-pr.ice.pred.io/oauth/token, 
CLIENTID=ingestor.57e72dd3-6f9e-4931-b4bc-cd04eaaff3e3.1f7dbe12-2372-439e-8104-06a5f4098ec9, 
Content-Type=MediaType.APPLICATION_FORM_URLENCODE, 
CUSTKEY=Noble, PASSWORD=154f0252d166f27b5e21a79f41a0daf3, 
TENANTUUID=c0642fe-a495-44db-93f7-67056fa2c061, 
TOKENURL=http4://d1e53858-2903-4c21-86c0-95edc7f2.pred-uaa.run.aws-usw02-pr.ice.pred.io/oauth/token, 
UPLOADURL=http4://apm-times-query-svc-prod.app-api.aws-usw02-pr.pred.io/v2/time_series/upload, 
USERNAME=5c0642fe-a495-44db-93f7-67056fa2c061_ingestor}, 
BodyType:String, Body:grant_type=password&username=5c0642fe-a495-44db-93f7-2c061_ingestor&password=154f0252d166f2ef171b02a79f41a0daf3
和标题:

Content-Type=application/x-www-form-urlencoded
Authorization=Basic aW5nZXN0b3IuNTdlNzJkZDMt==
服务器将发出一个访问令牌

就像这个邮递员的例子:

OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "username=93f7c061_ingestor&password=15a79f41a0daf3&grant_type=password");
Request request = new Request.Builder()
  .url("https://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws-usw02-pr.ice.io/oauth/token")
  .post(body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .addHeader("Authorization", "Basic aW5nZXN0b3IuNTdlNzJkZDMtNmY5ZS00OTMxLWI0YmMtY2QwNGVhYWZmM2UzLjFmN2RiZTEyLTIzNzItNDM5ZS04MTA0LTA2YTVmNDA5OGVjOTo=")
  .addHeader("Cache-Control", "no-cache")
  .addHeader("Postman-Token", "ad8ba9b0-6215-4c53-a6ef-b3a5bf7901f6")
  .build();

Response response = client.newCall(request).execute();
你好,我希望有人能帮忙,我被卡住了。 我已经确认,我相信HTTP4端点不起作用。我有一个死信队列

<bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
    <property name="deadLetterUri" value="${deadLetterQueue}"/>
    <property name="redeliveryPolicy" ref="redeliveryPolicyConfig"/>
</bean>

<bean id="redeliveryPolicyConfig" class="org.apache.camel.processor.RedeliveryPolicy">
    <property name="maximumRedeliveries" value="3"/>
</bean>
导致此消息的消息头看起来也不错

core.getToken.route) log[HTTP4 POST body: ${body}] --> http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws-usw02.io:443/oauth/token?throwExceptionOnFailure=false <<< Pattern:InOnly, Headers:{Authorization=Basic aW5nZXN0b3IuNTdlNzJkZDMtNmY5ZS00OTMxLWI0YmMtY2QwNGVhYWZmM2UzLjFmN2RiZTEyLTIzNzItNDM5ZS04MTA0LTA2YTVmNDA5OGVjOQ==, CamelHttpCharacterEncoding=UTF-8, CamelHttpMethod=POST, CamelHttpUri=http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws.io:443/oauth/token, Content-Type=MediaType.APPLICATION_FORM_URLENCODE, TOKENURL=http4://d95edc7a5cef2.uaa.run.aws-usw02-pr.ice.io:443/oauth/token}, BodyType:String, Body:grant_type=password&username=5c06-a495-44db-93f7-67056fa2c061_ingestor&password=7b5e21ef171b02a79f41a0daf3

core.getToken.route)log[HTTP4 POST body:${body}]->HTTP4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws-usw02.io:443/oauth/token?throweexceptionnfailure=falseok,这是一个多方面的问题

第一,我的代理设置不正确。我发现它必须设置为IP或名称,cononical name不带协议http://

我喜欢这样:

<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="http://PITC-Zscaler-Americas.proxy.corporate.com"/>
       <property key="http.proxyPort" value="80"/>
  </properties>
使用

其中,tokenUrl被定义为

http4://d1e53858-uaa.run.aws-usw02-pr.ice.io:443/oauth/token
这给了我一个504,我希望这是一些我可以照顾我这边,通常不是,但有时。。。所以我一直在尝试。。。直到我在HTTP_URI中使用了实际地址,如

https://d1e53858-uaa.run.aws-usw02-pr.ice.io/oauth/token
现在我得到一个CamelHttpResponseCode=401,CamelHttpResponseText=Unauthorized

我是一个快乐的露营者,这是我可以一起工作的。。。然后,我用xml测试了路由中URI的相同替换设置。这也起了作用

 <setHeader headerName="CamelHttpMethod">
    <constant>POST</constant>
 </setHeader>
<log message="HTTP4 POST headers: ${headers}" loggingLevel="DEBUG"/>
<setHeader headerName="CamelHttpUri">
    <simple>${header.TOKENURL}?throwExceptionOnFailure=false</simple>
</setHeader>
<to uri="http4://d1e53858-uaa.run.aws-usw02-pr.ice.io/oauth/token?throwExceptionOnFailure=false" />

邮递
${header.TOKENURL}?throweExceptionOnFailure=false
我仍在努力让动态路线发挥作用,但我对我所拥有的感到满意,以后会更加关注这一点

<toD uri="${header.TOKENURL}?throwExceptionOnFailure=false" />
<toD uri="${header.TOKENURL}" /> -->

-->

谢谢大家,我希望我作为一个菜鸟的奋斗能帮助别人,我不能是唯一一个有这些愚蠢事情的人。无论如何,干杯

我还感到困惑,因为文档中说,对于HTTP调用,所有的camel头都被删除了,而且看起来并没有发生这种情况,除非在调用时发生了这种情况,而我没有得到任何消息?谢谢大家,谢谢你们的时间。太好了!此外,我的代理设置位于环境或系统设置中。env| grep PROXY HTTPS_PROXY=HTTP_PROXY=这是一个HTTPS://POST请求。它可以是我正在使用的http4uri格式吗?http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.pr-uaa.run.aws-usw02-pr.ice.pr.io/oauth/token?这怎么知道它是HTTPS?
├── deadletterqueue
│   ├── ID-alphprdfuse2i-36326-1524606956414-3-65

grant_type=password&username=5c0642fe_ingestor&password=02a79f41a0daf3
core.getToken.route) log[HTTP4 POST body: ${body}] --> http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws-usw02.io:443/oauth/token?throwExceptionOnFailure=false <<< Pattern:InOnly, Headers:{Authorization=Basic aW5nZXN0b3IuNTdlNzJkZDMtNmY5ZS00OTMxLWI0YmMtY2QwNGVhYWZmM2UzLjFmN2RiZTEyLTIzNzItNDM5ZS04MTA0LTA2YTVmNDA5OGVjOQ==, CamelHttpCharacterEncoding=UTF-8, CamelHttpMethod=POST, CamelHttpUri=http4://d1e53858-2903-4c21-86c0-95edc7a5cef2.uaa.run.aws.io:443/oauth/token, Content-Type=MediaType.APPLICATION_FORM_URLENCODE, TOKENURL=http4://d95edc7a5cef2.uaa.run.aws-usw02-pr.ice.io:443/oauth/token}, BodyType:String, Body:grant_type=password&username=5c06-a495-44db-93f7-67056fa2c061_ingestor&password=7b5e21ef171b02a79f41a0daf3
<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="http://PITC-Zscaler-Americas.proxy.corporate.com"/>
       <property key="http.proxyPort" value="80"/>
  </properties>
  <properties>
       <property key="http.proxyHost" value="PITC-Zscaler-Americas.proxy.corporate.com"/>
       <property key="http.proxyPort" value="80"/>
  </properties>
  <properties>
       <property key="http.proxyHost" value="123.123.123.123"/>
       <property key="http.proxyPort" value="80"/>
  </properties>
m.setHeader(Exchange.HTTP_URI, tokenUrl);
<toD uri="${header.TOKENURL}?throwExceptionOnFailure=false" />
<toD uri="${header.TOKENURL}" />
<to uri="http4://d1e53858-uaa.run.aws-usw02-pr.ice.io:443/oauth/token?throwExceptionOnFailure=false" />
m.setHeader(Exchange.HTTP_URI, tokenUrl);
http4://d1e53858-uaa.run.aws-usw02-pr.ice.io:443/oauth/token
https://d1e53858-uaa.run.aws-usw02-pr.ice.io/oauth/token
 <setHeader headerName="CamelHttpMethod">
    <constant>POST</constant>
 </setHeader>
<log message="HTTP4 POST headers: ${headers}" loggingLevel="DEBUG"/>
<setHeader headerName="CamelHttpUri">
    <simple>${header.TOKENURL}?throwExceptionOnFailure=false</simple>
</setHeader>
<to uri="http4://d1e53858-uaa.run.aws-usw02-pr.ice.io/oauth/token?throwExceptionOnFailure=false" />
<toD uri="${header.TOKENURL}?throwExceptionOnFailure=false" />
<toD uri="${header.TOKENURL}" /> -->