发布于2023-02-04 22:51 阅读(649) 评论(0) 点赞(2) 收藏(0)
我需要使用查询字符串对 REST WS 进行 GET 调用,uri 必须如下所示:
http://somehost.com/someservice?parm1=value
我需要分配主体参数“parm1”的值(带有 getter 和 setter 的普通 pojo),所以这是骆驼路线:
<setHeader headerName = "Exchange.HTTP_QUERY" id = "queryStringSomeService">
<simple>parm1=${body.someField}</simple>
</setHeader>
<setHeader headerName = "CamelHttpMethod" id = "httpMethodSomeService">
<constant>GET</constant>
</setHeader>
<to id="SOME_SERVICE" uri="http4:/somehost.com/someservice?bridgeEndpoint=true" />
问题是查询字符串从未添加到 uri,http 方法最终使用了它的 POST,尽管我添加了标头以显式设置 GET。
我使用了 Spring DSL。
在文档的http://camel.apache.org/http4.html页面中,建立了选择HTTP方法的规则;在“使用 GET 或 POST 调用”部分中,但显然它们未在这种情况下应用。
更新:
将正文设置为 null 可以解决将 HTTP 方法更改为 GET 的问题,尽管在文档中说您可以使用 CamelHttpMethod 标头覆盖它。
但是对于查询字符串,我已经尝试了所有变体;使用 Exchange.HTTP_URI 和 Exchange.HTTP_QUERY,然后都不起作用
这是 WS 调用之前的交换标头:
Accept: application/json
CamelHttpCharacterEncoding: ISO-8859-1
CamelHttpMethod: GET
CamelHttpQuery: ?parm1=value
CamelHttpResponseCode: 200
CamelHttpResponseText: OK
CamelHttpUri: /someservice
CamelHttpUrl: http://somehost/someservice
CamelRedelivered: false
CamelRedeliveryCounter: 0
Connection: close
Content-Type: application/json;charset=UTF-8
Date: Fri, 14 Sep 2018 16:08:19 GMT
Last-Modified: Thu, 13 Sep 2018 13:33:30 GMT
Set-Cookie: JSESSIONID=YXQkEAUAjh0yWsu4UYwSG8vE.5aa71417-9e93-3be1-99ca-7b4ec1d6f2a0; Path=/ca_tar_tarjeta
Transfer-Encoding: chunked
breadcrumbId: ID-wildfly01-1536931422750-9-23
小心。在 Camel 路由中,Camel 消息正文通常成为传出消息的正文。这可能是 Camel 无论如何都使用 POST 的原因:您的 HTTP 请求有一个主体。null
在发送 HTTP 请求之前尝试将 Camel 消息体设置为。
不确定这是否正确,我总是使用 Java 路由:
<setBody>
<simple>${bodyAs(null)}</simple>
</setBody>
但是,我不知道为什么查询字符串不起作用。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/641615/d96b37a7b0b3d4908110/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!