Edu*_*elo 8 javascript json curl angularjs
我正在尝试向 REST API 发送发布请求。我注意到当我在curl中使用-d选项传递参数时一切正常。例子:
curl "https://mywebsite.com" -d "param1=x" -d "param2=y" -u "3SUHZb0sanKWrQ"
Run Code Online (Sandbox Code Playgroud)
但是,如果将参数作为 json 对象发送并使用 --data-binary,我会从 Api 收到错误(就好像没有收到参数一样)。例子:
curl "https://mywebsite.com" --data-binary $'{ "param1": "x", -d "param2":"y" }' -u "3SUHZb0sanKWrQ"
Run Code Online (Sandbox Code Playgroud)
我认为这两种方法具有相同的行为,但我认为我错了。这两种方法有什么区别?
PS:第二个请求是我在Google Chrome上选择选项时收到的curl请求copy as cURL,因为实际请求是Angular中的$http.post,其数据负载为JSON对象。我可以在 Angular 中做什么来让它工作?
var data = {
"param1": "x",
"param2": "y"
};
$http({
url: "https://mywebsite.com",
method: 'POST',
data: data
}).then(function successCallback(response){
console.log(response);
}, function errorCallback(response){
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
RTS*_*lio 12
-d @file或者等效地--data @file发送文件,但去掉回车符和换行符(也许还进行字符集转换)--data-binary @file将按原样发送文件--data-raw @file将发送文字字符串“@file”application/x-www-form-urlencoded此外,除非您覆盖它,否则所有三个都将 Content-Type 设置为;如果您要发送 JSON,您可能需要设置-H 'Content-Type: application/json'.
我建议,如果您想从命令行发送文字字符串,请使用--data-raw,如果您想发送文件,请使用--data-binary @file。
sen*_*rio -4
这就是我得到的curl --help:
-d, --data DATA HTTP POST data (H)\n --data-raw DATA HTTP POST data, '@' allowed (H)\n --data-ascii DATA HTTP POST ASCII data (H)\n --data-binary DATA HTTP POST binary data (H)\n --data-urlencode DATA HTTP POST data url encoded (H)\n --delegation STRING GSS-API delegation permission\n --digest Use HTTP Digest Authentication (H)\n --disable-eprt Inhibit using EPRT or LPRT (F)\n --disable-epsv Inhibit using EPSV (F)\n --dns-servers DNS server addrs to use: 1.1.1.1;2.2.2.2\n --dns-interface Interface to use for DNS requests\n --dns-ipv4-addr IPv4 address to use for DNS requests, dot notation\n --dns-ipv6-addr IPv6 address to use for DNS requests, dot notation\xc2\xa7\nRun Code Online (Sandbox Code Playgroud)\n\n因此,不同之处在于使用 -d 发送的数据不是二进制内容。
\n| 归档时间: |
|
| 查看次数: |
17792 次 |
| 最近记录: |