2010-11-23 439 views
3

我需要通过使用PUT请求的窗口下的curl.exe发布XML数据。如何使用curl在Windows下发布PUT请求?

在袅袅的帮助,我发现:

-d/- 数据<数据> HTTP POST数据(H)

我应该提供什么<数据>?

+2

这个选项没有使用curl,但根据手册,它只是字符串,它作为实体主体传递给服务器。如果您的数据以'@'开始,那么接下来是将被读取并发送到服务器的文件的名称。检查手册页:http://curl.haxx.se/docs/manpage.html – 2010-11-23 15:18:00

+0

@PeterŠtibraný谢谢!忽略了这一点 - 尽管这是针对unix命令行语法的特定内容,并且在Windows中没有。 – sergtk 2010-11-23 15:25:16

回答

14

卷曲样品呼吁

 
# with inlining plain data 
curl -X PUT -d "payload" http://localhost 
# referrring file 
curl -X PUT -d @myXmlFile.xml http://localhost 

如果您的Windows卷曲端口不支持它去cygwin。它是一个类似linux的环境,也提供了“适当”的卷曲。

+0

我尝试了cygwin并获得getaddrinfo错误。在其他PC上运行 - 一切正常。 – sergtk 2010-11-25 23:48:51

6

在windows中,如果双引号参数本身包含双引号字符,则双引号必须加倍。

例如,输入'This is“引用的”有效载荷“为”This is“”quoted“”payload“,这与Unix中的非常不同。

例子:

curl -X PUT -d "This is ""quoted"" payload" http://localhost 
2

在Windows,你需要把@的报价为您要发送的文件:

curl -XPUT --data-binary "@uploadme.txt" 

否则你会得到奇怪的错误因为它试图使用该文件的内容作为url:

curl: (6) Couldn't resolve host 'upload' 
curl: (6) Couldn't resolve host 'me!' 

( uploadme.txt包含“上传我!”)