上WINDOWS RESTful服务卷曲POST命令行(cURL POST command line

2019-06-17 15:27发布

我的问题:使用命令行工具来卷曲我的本地服务器,而我的POST请求不工作一起发送一些数据。

似乎是什么导致了错误:想象这样的事情

  1. curl -i -X POST -H 'Content-Type: application/json' -d '{"data1": "data goes here", "data2": "data2 goes here"}' http:localhost/path/to/api

返回的数据结果

curl: (6) Could not resolve host: application; No data record of requested type
curl: (6) Could not resolve host: data goes here,; No data record of requested type
curl: (6) Could not resolve host: data2; No data record of requested type
curl: (3) [globbing] unmatched close brace/bracket at pos 16

经过一番搜索我想通了,问题可能不是用于请求的sintax,因为它的工作原理上的UNIX shell。

你可能使用的是Windows? 说了这么看起来像一个完全破壳,不妥善处理单引号VS双引号。 我只是去尝试的命令行和它在我的Linux系统中运行良好。 http://curl.haxx.se/mail/archive-2011-03/0066.html

我试图解决与“逃了\”,但它仍然没有奏效

2。

卷曲-i -X POST -H '内容 - 类型:应用/ JSON' -D '{\ “DATA1 \”:\ “数据到这里\”,\ “DATA2 \”:\ “data2的到这里\”}' HTTP://本地主机/路径/到/ API

3。

卷曲-i -X POST -H '内容 - 类型:应用/ JSON' -D '{\ “DATA1 \”:\ “数据到这里\”,\ “DATA2 \”:\ “data2的到这里\”}' HTTP://本地主机/路径/到/ API

所以我放弃了。 窗户似乎与POST发送的JSON对象搞乱

Answer 1:

我跑进我的X64 Win7的笔记本电脑同样的问题,并能得到它的工作使用标有卷曲释放Win64平台-通用W¯¯SSL使用非常类似的命令行格式:

C:\Projects\curl-7.23.1-win64-ssl-sspi>curl -H "Content-Type: application/json" -X POST http://localhost/someapi -d "{\"Name\":\"Test Value\"}"

其中仅通过使用周围的那些逃脱双引号和头参数值你的第二逃生版本不同。 绝对喜欢Linux命令语法的更多。



Answer 2:

在命令行比用引号战斗更简单另一种方法是把JSON到一个文件中,并使用卷曲参数,例如在json.txt以下的@前缀:

{ "syncheader" : {
    "servertimesync" : "20131126121749",
    "deviceid" : "testDevice"
  }
}

然后在我的情况下,我发出:

curl localhost:9000/sync -H "Content-type:application/json" -X POST -d @json.txt

保持JSON更加易读了。



Answer 3:

替代的解决方案:比命令线A更用户友好的解决方案:

如果你正在寻找一个用户友好的方式来发送和使用比简单的GET的可能是你其他的HTTP方法请求数据正在寻找铬extention就这样一个http://goo.gl/rVW22f叫无所谓高级REST客户端

对于球员希望留在命令行我推荐Cygwin的:

我结束了卷曲这让我们得到那个Linux的感觉上安装了cygwin -在Windows!

使用Cygwin命令行这个问题已经停止,最重要的是,在1使用的请求语法工作的罚款。

相关链接:

我在那里下载适用于Windows的命令行卷曲?

有关如何安装并获得卷曲与Cygwin的工作只是去这里了解更多信息

我希望它可以帮助别人,因为我整个上午都在此度过。



Answer 4:

至少在我测试Windows的二进制版本,(在通用Win64上无SSL二进制 ,目前基于7.33.0 ),你是受到限制的命令行参数是如何被解析。 受圣诞节答案描述在该环境中,也可以工作在批处理文件正确的语法。 使用提供的示例:

curl -i -X POST -H "Content-Type: application/json" -d "{""data1"":""data goes here"",""data2"":""data2 goes here""}" http:localhost/path/to/api

的清洁替代,以避免处理转义字符,这取决于什么库用来解析命令行,是在一个单独的文件的标准JSON格式的文本:

curl -i -X POST -H "Content-Type: application/json" -d "@body.json" http:localhost/path/to/api


Answer 5:

  1. 尝试使用双引号(“),而不是单个的人(')。
  2. 为了保持JSON格式的报价,试戴倍增(“”)。
  3. 为了保持内部的数据报价,尝试双逃脱他们像这样(\\“”)。

     curl ... -d "{""data1"": ""data1 goes here"", ""data2"": ""data2 goes here""}" curl ... -d "{""data"": ""data \\""abc\\"" goes here""}" 


文章来源: cURL POST command line on WINDOWS RESTful service