繁体   English   中英

Postman 中的 HTTP 查询在 Spring Boot Apache Camel 3.1 中不起作用

[英]Working HTTP query in Postman not working in Spring Boot Apache Camel 3.1

我是 Apache Camel 的新手,我正在努力解决这个问题。 我想复制一个在 Postman 中工作的简单查询:

https://{{baseurl}}/v3/company/{{companyid}}/query?query=SELECT id, Metadata.LastUpdatedTime FROM Payment WHERE Metadata.LastUpdatedTime>='2018-01-01' ORDERBY Metadata.LastUpdatedTime, Id STARTPOSITION 1 MAXRESULTS 10 &minorversion=47

GET 请求包括以下标头:

Accept: application/json
Authorization: Bearer {very long auth token}

其中{very long auth token}是实践中的实际值。 我尝试用 Apache Camel 复制这个:

        from("timer:foo?repeatCount=1")
            .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.GET))
            .setHeader(Exchange.HTTP_PATH, constant("v3/company/{companyid}/query"))
            .setHeader(Exchange.HTTP_QUERY, constant("query=SELECT id, Metadata.LastUpdatedTime FROM Payment WHERE Metadata.LastUpdatedTime>='2018-01-01' " + 
                    "ORDERBY Metadata.LastUpdatedTime, Id STARTPOSITION 1 MAXRESULTS 10 &minorversion=47"))
            .setHeader("Accept", constant("application/json"))
            .setHeader("Authorization", constant("Bearer {very long auth code}"))
            .to("log://PoCMainApp?showBody=true&showBodyType=true&showHeaders=true&showProperties=true")
            .to("http://quickbooks.api.intuit.com")
        ;

其中{companyid}{very long auth token}是实践中的实际值。 在运行时,查询挂起并最终超时。 将查询粘贴到浏览器中时也会发生同样的情况,浏览器显然不提供AcceptAuthorization标头。

这让我认为 Camel 构建的整体有效载荷可能存在问题。

日志showHeaders=true仅显示与代码中相同的值 - 它不显示请求中实际发送的内容。 我试图对 sysout 进行更多调试,但没有取得太大成功。 这是一个 Spring Boot 项目,因此log4j.properties被忽略(至少在我的设置中)。 相反,我已将 log4j 设置转换为application.properties ,如下所示:

camel.springboot.tracing = true

# https://springframework.guru/using-logback-spring-boot
logging.level.httpclient.wire.header=TRACE
logging.level.org.apache.camel.component.http=TRACE
logging.level.org.apache.camel.http.common=TRACE
logging.level.org.apache.camel.http=TRACE
logging.level.org.apache.commons.httpclient=TRACE

这是我在 sysout 中得到的所有信息:

INFO 51071 --- [1 - timer://foo] PoCMainApp                               : Exchange[ExchangePattern: InOnly
Properties: {
    CamelTimerCounter=1
    CamelTimerFiredTime=Mon Mar 30 16:49:28 BST 2020
    CamelTimerName=foo
    CamelTimerPeriod=1000
    CamelToEndpoint=log://PoCMainApp?showBody=true&showBodyType=true&showHeaders=true&showProperties=true
}
Headers: {
    Accept=application/json
    Authorization=Bearer {very long auth token}
    CamelHttpMethod=GET
    CamelHttpPath=v3/company/193514690594249/query
    CamelHttpQuery=query=SELECT id
    Metadata.LastUpdatedTime FROM Payment WHERE Metadata.LastUpdatedTime>='2018-01-01' ORDERBY Metadata.LastUpdatedTime, Id STARTPOSITION 1 MAXRESULTS 10 &minorversion=47
    firedTime=Mon Mar 30 16:49:28 BST 2020}
BodyType: null
Body: [Body is null]]

INFO 51071 --- [1 - timer://foo] org.apache.camel.Tracing                 :      [route1      ] [http://quickbooks.api.intuit.com ] Exchange[Id: ID-ub18dm-1585583368149-0-1, BodyType: null, Body: [Body is null]]

TRACE 51071 --- [1 - timer://foo] o.a.camel.component.http.HttpProducer    : Using URL: http://quickbooks.api.intuit.com/v3/company/193514690594249/query?query=SELECT%20id,%20Metadata.LastUpdatedTime%20FROM%20Payment%20WHERE%20Metadata.LastUpdatedTime%3E='2018-01-01'%20ORDERBY%20Metadata.LastUpdatedTime,%20Id%20STARTPOSITION%201%20MAXRESULTS%2010%20&minorversion=47 with method: GET http://quickbooks.api.intuit.com/v3/company/193514690594249/query?query=SELECT%20id,%20Metadata.LastUpdatedTime%20FROM%20Payment%20WHERE%20Metadata.LastUpdatedTime%3E='2018-01-01'%20ORDERBY%20Metadata.LastUpdatedTime,%20Id%20STARTPOSITION%201%20MAXRESULTS%2010%20&minorversion=47 HTTP/1.1

DEBUG 51071 --- [1 - timer://foo] o.a.camel.component.http.HttpProducer    : Executing http GET method: http://quickbooks.api.intuit.com/v3/company/193514690594249/query?query=SELECT%20id,%20Metadata.LastUpdatedTime%20FROM%20Payment%20WHERE%20Metadata.LastUpdatedTime%3E='2018-01-01'%20ORDERBY%20Metadata.LastUpdatedTime,%20Id%20STARTPOSITION%201%20MAXRESULTS%2010%20&minorversion=47

这一直让我发疯,所以我会很感激任何帮助。

提前致谢,-suitej

正如亚当在上面指出的那样,Intuit 只接受 HTTPS。

解决办法是:

.to("https://quickbooks.api.intuit.com")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM