Camel 为什么curl在post中以{data=}的形式发送数据?

oyxsuwqo  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(79)

我在ApacheCamel中编写了一个简单的rest服务,并通过调用我的服务的端点使用curl命令对其进行了测试。
该服务以纯文本形式接收一个简单的String,如“ABC123-D-FE”,但由于我进行了多次测试,数据总是以“{ABC123-D-FE=}"的形式接收,并且总是添加“{ =}"。
一开始我以为是我的服务捕获了这样的数据,但是我尝试过的所有其他方法(例如,rest客户端、postman、通过其他服务调用服务)都没有产生这样的结果,而且服务总是只接收纯文本数据,只是通过使用curl才这样格式化的。
命令是:
服务提供商:
找不到对此行为的任何引用,唯一的结论是curl默认会做一些事情(并且不明白为什么或如何删除它)。
我在Ubuntu Mate 20.04中使用了curl命令。

pzfprimi

pzfprimi1#

编辑:根据Nick奥德尔的评论,这几乎可以肯定地意味着它被解析为一个Map,其键“ABC123-F-DE”具有空值,如以下json:

{
    "ABC123-F-DE": ""
}
  • 我猜是你的parsed-object-stringify函数添加了{来表示map的开始,添加了=来指定“这个键的值”,添加了}来指定map的结束?

让我们来看看curl实际上通过一个小小的netcat服务器发送了什么:

$ nc -l 1111

紧接着

$ curl -X POST -d ABC123-F-DE http://localhost:1111

产量:

$ nc -l 1111
POST / HTTP/1.1
Host: localhost:1111
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

ABC123-F-DE

结论:这绝对不是 curl 。
我最好的猜测是:服务器的application/x-www-form-urlencoded-解析器有什么奇怪的地方吗?

相关问题