2017-08-04 27 views
0

curlコマンドをREST apiに発行すると、以下のような応答が表示されます。curlコマンドを使用したときのHTTP POST再呼び出しのデータフォーマット

curl -i http://10.4.0.22:8088/api/clients/TEST_1/8194/1/1 

応答:これは、HTTPリクエストGETと同等であることを

HTTP/1.1 200 OK 
Content-Type: application/json 
Content-Length: 51 
Server: Jetty(9.1.z-SNAPSHOT) 

{"status":"CONTENT","content":{"id":1,"value":"0"}} 

私の理解。

私がやっていることはvalueフィールドを更新し、値を1に変更することです。

-dフラグを使用してPOSTリクエストが必要です。

私の質問は、データがcurlコマンドでどのような形式であるべきかを知る方法です。

私は

curl -d "{"status":"CONTENT","content":{"id":1,"value":"1"}}" http://10.4.0.22:8088/api/clients/EST_1/8194/1/1 

を試してみましたが、私はこの応答を取得します。

{"status":"METHOD_NOT_ALLOWED"} 

私はテ-dフラグの後にJSONを指定しています方法が間違っていると思いますか?

答えて

0

応答METHOD_NOT_ALLOWEDは、サーバーがPOSTメソッドを許可しないことを意味します。

レスポンスの詳細な出力を得るには、-vを追加できます。場合によっては、サーバがメッセージ内で応答HTTP Methods(またはVerbs)を返すことがあります。

アプリケーションのエンドポイントでパラメータを試してみましたが、うまくいきました。あなたはまたあなたの要求にContent-Typeヘッダーを指定し、Mime値を対応に設定しようとすることができます

curl -d "{"status":"CONTENT","content":{"id":1,"value":"1"}}" http://sitename.azurewebsites.net/index.php -v 
* Adding handle: conn: 0x2c257d0 
* Adding handle: send: 0 
* Adding handle: recv: 0 
* Curl_addHandleToPipeline: length: 1 
* - Conn 0 (0x2c257d0) send_pipe: 1, recv_pipe: 0 
* About to connect() to sitename.azurewebsites.net port 80 (#0) 
* Trying 104.211.224.252... 
* Connected to sitename.azurewebsites.net (104.211.224.252) port 80 (#0) 
> POST /index.php HTTP/1.1 
> User-Agent: curl/7.33.0 
> Host: sitename.azurewebsites.net 
> Accept: */* 
> Content-Length: 39 
> Content-Type: application/x-www-form-urlencoded 
> 
* upload completely sent off: 39 out of 39 bytes 
< HTTP/1.1 200 OK 
< Content-Length: 0 
< Content-Type: text/html 
< X-Powered-By: PHP/5.4.45 
< Date: Fri, 04 Aug 2017 14:24:08 GMT 

下記を参照してください。

CURLのために、あなたはこのスレッドを見たことがあり"Content-Type: application/json"

に設定した値と-Hを使用することができます。How to POST JSON data with Curl from Terminal/Commandline to Test Spring REST?

+0

おかげで非常に多くのあなたの役に立つ返事を。 –

関連する問題