2015-10-25 16 views
6

RestClient Rubyの宝石を使ってカールリクエストを模倣しようとしていますが、これまでペイロードを送信しようとして多くの問題を抱えてきました。 - 不正要求エラーRestClientでポストリクエストでデータを送信する方法

RestClient::Request.execute(method: :post, url: URL, user: API_KEY, payload: {"param_1" => "1"})

ああ、私は400を得続ける:私のカール要求は、私はこのようなものを使用してRestClientでこれを再現しようとしてきたこの

curl URL -X POST -u API_KEY -d '{"param_1": "1"}'

ようになりますこれを行うとき。間違った方法でデータを送信していますか?ペイロード以外のものを使用すべきですか?

答えて

6

変更:

payload: {"param_1" => "1"}) 

には:

payload: '{"param_1": "1"})' 

headersを指定します。

だから、それは次のようになります。

RestClient::Request.execute(method: :post, 
          url: 'your_url', 
          user: 'API_KEY', 
          payload: '{"param_1": "1"}', 
          headers: {"Content-Type" => "application/json"} 
          ) 
+0

すべてはと正常に動作していますカール。私はRestClientと同等のクエリをどうやって作るのだろうかと不思議です – rboling

+0

助けてくれてありがとう!結局のところ、データがJSONで送信されていることを明確にするために、議論を進めなければなりませんでした。 – rboling

+0

はい、あなたの 'payload'が文字列ではなく、ハッシュであるという別の問題がありました。私の答えはその問題に対処しました。また、うまくいかなかった場合は、 'headers'オプションをリクエストに追加するように指示します。しかし、あなたはすでにこれを行っています。これは素晴らしいことです:) –

1

が、私は私のデータはJSON形式であったことを指定するために引数を追加する必要がありましたが判明します。

payload: {"param_1" => "1"} 

RestClient::Request.execute(method: :post, url: URL, user: API_KEY, payload: '{"param_1": "1"}', headers: {"Content-Type" => "application/json"})

+0

あなたは@K M Rakibul Islamの答えにチェックマークを付けることができました。 Rboling – illusionist

2

だけ変更:正しい答えは、このようなものだったので、

payload: {"param_1" => "1"}.to_json 

、それは次のようになります。

RestClient::Request.execute(method: :post, 
          url: 'your_url', 
          user: 'API_KEY', 
          payload: {"param_1" => "1"}.to_json, 
          headers: {"Content-Type" => "application/json"} 
          ) 
関連する問題