我正在使用 curl 将登录信息发布到 json API。我很困惑,因为以下两个我认为是等效的调用给出了不同的结果:
curl -v -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"username":"test@test.com","password":"secret"}' http://api.mysite.com/Services/v1/login.svc/login
此调用导致 400 错误请求。但是,如果我将登录 json 放入名为“login.json”的文件中,并将调用更改为:
curl -v -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d @login.json http://api.mysite.com/Services/v1/login.svc/login
然后调用工作正常,给出 200 个结果,并返回预期的 json 响应。
为什么第一个电话不起作用?
谢谢!
生锈的更新
我尝试了以下方法,包括 JSON 周围的单引号和不带单引号:
curl -v -H "Accept: application/json" -H "Content-Type: application/json" --data-urlencode '{username:test@example.com,password:11111111}' "https://api.example.com/login"
但是数据不会发送到服务器。从 curl 的输出:
Warning: Couldn't read data from file
Warning: "{username:test@example.com,password:11111111}", this makes an empty
Warning: POST.
虽然请求确实得到了 200 OK 响应,但当我使用 file 方法时,登录仍然失败,大概是因为没有发送 JSON。