CURL多部分POST非基于文件的数据

时间:2016-05-16 19:36:16

标签: xml post curl multipartform-data

使用curl,我试图将多个任意XML文档发布到需要1个或更多文档的端点(此处的具体目标是测试“或更多”)。

我看到一些SO答案建议使用带有一次性键名的-F(而不是-d)将指示curl生成正确的多部分标题和邮件正文边界,并使用键的值作为消息正文中的部分,代替文件内容:

curl -u user:pass -k -X POST \
  -F key1='<Document>Document 1</Document>' \
  -F key2='<Document>Document 2</Document>' \
  https://localhost:1234/some/endpoint

然而,curl balks表示键值不是真正的文件名:

curl: (26) couldn't open file "<Document>Document 1</Document>"

这不是一种有效的方法吗?我的curl命令有问题吗?使用-d执行多部分POST时,我没有成功获得curl。

1 个答案:

答案 0 :(得分:1)

将两个连接的XML元素作为单个消息体(而不是多部分)进行POST。但是,这是意料之外的,因为XML中的多个根元素无效:

curl -u user:pass -k -X POST \
  -H "Content-Type: text/xml" \
  -d '<Document>Document 1</Document><Document>Document 2</Document>' \
  https://localhost:1234/some/endpoint