1. ホーム
  2. windows

WINDOWS RESTfulサービスでのcURL POSTコマンドライン

2023-08-05 08:35:58

質問

私の問題です。 私のPOSTリクエストと一緒にいくつかのデータを送信している間、私のローカルホストサーバーをcurlするコマンドラインツールを使用すると、動作していない。

何がエラーを引き起こしているようです。 次のようなことを想像してみてください。

  1. curl -i -X POST -H 'Content-Type: application/json' -d '{"data1": "data goes here", "data2": "data2 goes here"}' http:localhost/path/to/api

返送データの結果

curl: (6) Could not resolve host: application; No data record of requested type
curl: (6) Could not resolve host: data goes here,; No data record of requested type
curl: (6) Could not resolve host: data2; No data record of requested type
curl: (3) [globbing] unmatched close brace/bracket at pos 16

いくつか検索した結果、UNIXシェルで動作するため、リクエストに使用されるsintaxに問題があるわけではないことがわかりました。

もしかして、Windowsをお使いですか?それは完全に壊れたシェルのように見えますが シングルクォートとダブルクォートを正しく扱えません。 私はそのコマンドラインを試しましたが、私のリナックスボックスでは問題なく動作しました。 http://curl.haxx.se/mail/archive-2011-03/0066.html

私はそれらの"エスケープit \" で回避しようとしましたが、それはまだ動作しませんでした。

2.

curl -i -X POST -H 'Content-Type: application/json' -d '{ \"data1}"data1}": \"data goes here", \"data2": \"data2 goes here"}' http: //localhost/path/to/api

3.

<ブロッククオート

curl -i -X POST -H 'Content-Type: application/json' -d '{ \"data1}"data1}": \"data goes here", \"data2": \"data2 goes here"}' http: //localhost/path/to/api

というわけで、あきらめました。 WindowsはPOSTで送信されたJSONオブジェクトを混乱させるようです。

どのように解決するのですか?

私は win7 x64 ラップトップで同じ問題に遭遇し、次のようなラベルの付いた curl リリースを使用して動作させることができました。 Win64 - 一般的な SSL というラベルの付いた curl リリースを使用して、非常によく似たコマンド ライン フォーマットを使用して動作させることができました。

C:\Projects\curl-7.23.1-win64-ssl-sspi>curl -H "Content-Type: application/json" -X POST http://localhost/someapi -d "{\"Name\":\"Test Value\"}"

2番目のエスケープバージョンとの違いは、エスケープされたものとヘッダーパラメータの値をダブルクォートで囲んでいることだけです。間違いなく、Linuxのシェル構文をより好みます。