curl を使用して、ログイン情報を json API に投稿しています。同等だと思っていた次の 2 つの呼び出しが異なる結果をもたらしているため、混乱しています。
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 Bad Request になります。ただし、ログイン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 レスポンスを受け取りましたが、おそらく JSON が送信されていないため、file メソッドを使用すると機能するログインは失敗しました。