curl我可以通过执行以下命令成功创建地点:
curl
$ curl -vX POST https://server/api/v1/places.json -d " auth_token=B8dsbz4HExMskqUa6Qhn& \ place[name]=Fuelstation Central& \ place[city]=Grossbeeren& \ place[address]=Buschweg 1& \ place[latitude]=52.3601& \ place[longitude]=13.3332& \ place[washing]=true& \ place[founded_at_year]=2000& \ place[products][]=diesel& \ place[products][]=benzin \ "
服务器返回HTTP/1.1 201 Created。 现在我想将有效负载存储在一个 JSON 文件中,如下所示:
HTTP/1.1 201 Created
// testplace.json { "auth_token" : "B8dsbz4HExMskqUa6Qhn", "name" : "Fuelstation Central", "city" : "Grossbeeren", "address" : "Buschweg 1", "latitude" : 52.3601, "longitude" : 13.3332, "washing" : true, "founded_at_year" : 2000, "products" : ["diesel","benzin"] }
所以我修改了要执行的命令,如下所示:
$ curl -vX POST http://server/api/v1/places.json -d @testplace.json
返回失败HTTP/1.1 401 Unauthorized。为什么?
HTTP/1.1 401 Unauthorized
curl使用默认内容类型发送 POST 请求application/x-www-form-urlencoded。如果要发送 JSON 请求,则必须指定正确的内容类型标头:
application/x-www-form-urlencoded
$ curl -vX POST http://server/api/v1/places.json -d @testplace.json \ --header "Content-Type: application/json"
但这只有在服务器接受 json 输入时才有效。.jsonurl 末尾的可能只表示输出 是 json,并不一定意味着它也会处理 json 输入 。API 文档应该会提示您是否这样做。
.json
您得到 a401而不是其他错误的原因可能是因为服务器无法auth_token从您的请求中提取 。
401
auth_token