当前位置: 首页 > 知识库问答 >
问题:

使用Camel中的查询字符串对REST Web服务的HTTP GET调用

颛孙和颂
2023-03-14

我需要使用查询字符串对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调用”部分中,但显然在本例中没有应用它们。

更新:

将body设置为null可以解决将HTTP方法更改为GET的问题,尽管文档中说可以使用CamelHttpMethod头覆盖该方法。

但是对于查询字符串,我尝试了所有的变体;交换。HTTP_URI和Exchange。HTTP_查询,所有这些都不起作用

这是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

共有1个答案

苍宜修
2023-03-14

当心。在Camel路由中,Camel消息正文通常成为传出消息的正文。这可能就是Camel使用POST的原因:您的HTTP请求有一个主体。在发送HTTP请求之前,请尝试将Camel消息正文设置为null

不确定这是否正确,我总是使用Java路由:

<setBody>
    <simple>${bodyAs(null)}</simple>
</setBody>

但是,我不知道为什么查询字符串不起作用。

 类似资料:
  • 问题内容: 我有“文档”(活动记录),其属性称为“偏差”。该属性具有“ Bin X”,“ Bin $”,“ Bin q”,“ Bin%”等值。 我正在尝试使用tire / elasticsearch搜索属性。我正在使用空白分析器索引偏差属性。这是我用于创建索引的代码: 当查询字符串不包含特殊字符时,搜索似乎工作正常。例如,将仅返回其中包含单词AND的那些记录。但是,搜索类似或的结果将显示单词几乎忽

  • 我试图使用查询字符串实现Codeigniter分页,但遇到了一些问题。我已经打开了 因此,使用查询字符串进行分页,但就我所知,当您使用查询字符串进行控制器和方法路由时,这确实是为了工作。然而,在我的情况下,我仍然使用URI段进行路由,但只是想使用查询字符串进行分页、过滤结果、搜索等。当我尝试使用http_build_query()重建的url与查询字符串发送通过它导致per_page(我已重命名为

  • 在我删除索引之后。php,我在codeigniter中启用查询字符串。但我有一些重定向链接的问题。详细信息,我有登录表单(登录/索引),登录成功时重定向到“欢迎/索引”,并在会话中保存电子邮件。 但是登录成功时只加载视图的"欢迎/索引"和错误的链接,现在链接是:"?登录/索引"并且会话不保存。请帮帮我。 这是我的密码 登录。php(控制器) Welcome.php(控制器) 欢迎留言。php(视图

  • 问题内容: 我正在发出这样的请求: 如何传递查询字符串参数?我是否只是将它们添加到URL?我在docs中找不到示例。 问题答案: 您的第一个想法是对的:只需将其添加到URL。 请记住,您可以使用模板字符串(反引号)简化将变量放入查询的过程。

  • 使用php或javascript或regex,是否有一个快速(希望是一行程序)从前一个(引用者)URL获取查询字符串? 从第二页...我想知道前面的查询字符串“One”。