API に対して cURL コマンドを使用するスクリプトを作成しています。リクエストとしてフォーマットされた cURL コマンドを送信しapplication/json
、結果を取得します。これを解析して Ruby ハッシュに変換します。
これは、cURL POST コマンドを使用して正しくフォーマットされた JSON 応答を取得するときにうまく機能します。ただし、cURL GET コマンドを使用すると、ヘッダーを持つ JSON ドキュメントが返されます。
puts r:
HTTP/1.1 200 OK
X-Compute-Request-Id: req-7e625990-068b-47d1-8c42-9d3dd3b27050
Content-Type: application/json
Content-Length: 1209
Date: Wed, 16 Jan 2013 20:47:41 GMT
{ <JSON DATA> }
しようとするとJSON.parse(r)
、'HTTP/1.1.' で予期しないトークン エラーが発生します。
これのための私の方法:
def list_flavors
r = %x(curl -s -k -D - -H \"X-Auth-Token: #{$token}\" -X 'GET' http://10.30.1.49:8774/v2/27e60c130c7748f48b0e3e9175702c30/flavors -H 'Content-type: application/json')
response = JSON.parse(r)
response
end
正規表現を使用して JSON ドキュメントから本文を取り出して解析する方法はありますか?
または、cURL からの応答を取得するときに、これについて間違った方法で行っていますか?