我正在使用curl执行PUT请求,如下所示:
curl --user admin:pass -H "Content-Type: application/xml" -d
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<disabled>false</disabled>
<local>true</local>
<publicKey>publickeywithnewlines</publicKey>
<userType>STANDARD</userType>
<username>testuser1212</username>
<password>pass</password>
</user>'
-X POST http://www.dummyaddress.com/api/members/
我需要在publickey标记中包含的文本末尾插入新行和回车符。我尝试过使用标签新的行字符,如 但似乎没什么用。我读过有关-data-binary的内容,但不知道如何在这里应用它。任何帮助将不胜感激。
我尝试将内容放入如下文件中: 假 真正 Tootsie卷提拉米苏蛋白杏仁饼干胡萝卜蛋糕\ n \ n \ n \ n 标准 simpleUser77786 通过 但curl命令似乎没有正确退出。好像命令还没有完成执行。
它是卷曲 - 用户管理员:传递-H'内容类型:application / xml' - data-binary'@ template.xml'-X POST http://www.dummyaddress.com/api/users/
答案 0 :(得分:0)
这是我刚试过的东西,也许它可以帮助你找出正在发生的事情。
将您的POST数据放入文件中(例如post.xml
),然后对其进行编辑。我只是在这里复制/粘贴你的初始例子:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<disabled>false</disabled>
<local>true</local>
<publicKey>publickeywithnewlines</publicKey>
<userType>STANDARD</userType>
<username>testuser1212</username>
<password>pass</password>
</user>
要进行调试,请设置一个带有nc
的虚拟TCP服务器,并通过hexdump
管道输出,以便您可以准确地看到上传到服务器的内容:
nc -nl -p 8888 | hexdump -C
然后运行:
curl --user admin:pass -H 'Content-Type: application/xml' \
--data-binary '@post.xml' -X POST http://127.0.0.1:8888
(前导@
指示curl从test.xml
读取POST数据,从而更容易编辑/调整。
使用--data-binary
,您的数据应不加改变地上传。当然,您可以正确格式化文件(特别是关于行尾字符)。这里是我在<publicKey>
元素中放入几个CR + LF后得到的摘录:
...
00000110 75 65 3c 2f 6c 6f 63 61 6c 3e 0a 20 20 3c 70 75 |ue</local>. <pu|
00000120 62 6c 69 63 4b 65 79 3e 0d 0a 0d 0a 3c 2f 70 75 |blicKey>....</pu|
^^^^^^^^^^^
00000130 62 6c 69 63 4b 65 79 3e 0a 20 20 3c 75 73 65 72 |blicKey>. <user|
...
(请注意偏移0d 0a 0d 0a
处的双00000128
)
根据您的具体要求修改post.xml
,然后只在您对结果感到满意时更改curl
命令行上的目标网址。
注意:您还应该使用适当的XML实体替换原始CR和LF:
和

。