所以我得到了发送到特定服务器的数据。现在我想使用来自我本地机器的curl来做同样的事情来解决服务器上的特定repsonses并了解更多关于curl的信息。
以下是我数据的一部分
POST /auth HTTP/1.1
platform: android
X-Auth-Token: <censored>
Content-Type: application/json; charset=utf-8
Host: api.blabla.com
Accept-Encoding: gzip
正在发送的数据:
{"blabla_token": "sdsadsad", "blahblah_id": "23213", "locale": "us"}
现在,当我在dos shell中尝试cURL时,我尝试
curl --insecure -X POST https://api.blabla.com/auth --data '{"blabla_token": "sdsadsad", "blahblah_id": "23213", "locale": "us"}'
我从cURL得到的回应是:
{"code":401,"error":"blablaTokenRequired"}
即使我指定了令牌。因此,有两种可能的情况,因为令牌是正确的:
有人可以帮助我吗?我正在尽力而为,但没有成功
答案 0 :(得分:1)
我不确定我是否理解您的应用程序特定权利,但可能需要考虑一件事:
男子卷曲说:-d, --data <data>
(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when
a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the
server using the content-type application/x-www-form-urlencoded. Compare to -F, --form.
-d, --data is the same as --data-ascii. --data-raw is almost the same but does not have a special interpreta‐
tion of the @ character. To post data purely binary, you should instead use the --data-binary option. To URL-
encode the value of a form field you may use --data-urlencode.
我无法在您的示例中看到将数据作为HTML表单输入发送的必要性,可能您的应用程序期望只是&#34; raw&#34; POST正文然后你必须尝试这个:
curl --insecure -X POST https://api.blabla.com/auth --data--binary '{"blabla_token": "sdsadsad", "blahblah_id": "23213", "locale": "us"}'
PS并且肯定这是错误不是关于使用--insecure
而只是要求curl忽略ssl验证
答案 1 :(得分:0)
你忘了标题并启用压缩编码(gzip),但是,我相信你不能强迫curl只使用curl命令行来支持gzip编码,你将不得不使用libcurl,这会让请求说出来“接受编码:gzip,deflate”在大多数系统上,使用--compressed ..如果您不接受,请使用libcurl重写它(如果您愿意,可以通过CURLOPT_ENCODING强制它只说“gzip”)
curl -X POST https://api.blabla.com/auth --data '{"blabla_token": "sdsadsad", "blahblah_id": "23213", "locale": "us"}' --header 'platform: android' --header 'X-Auth-Token: <censored>' --header 'Content-Type: application/json; charset=utf-8' --header 'Host: api.blabla.com' --compressed
另一个问题:在某些系统上,会有一个默认的useragent标头(比如debian 6),而在某些系统上,curl没有默认的useragent(比如debian 8)..你可能想用--user-代理人''太