3

RestClient を使用して、この CURL リクエストを Ruby に変換するのに問題があります。

system("curl --digest -u #{@user}:#{@pass} '#{@endpoint}/#{id}' --form image_file=@'#{path}' -X PUT")

400 Bad Requestエラーが発生し続けます。私が知る限り、リクエストは適切に認証されますが、ファイルのアップロード部分でハングアップします。これが私の最善の試みであり、そのすべてで400エラーが発生します。

resource = RestClient::Resource.new "#{@endpoint}/#{id}", @user, @pass
#attempt 1
resource.put :image_file => File.new(path, 'rb'), :content_type => 'image/jpg'
#attempt 2
resource.put File.read(path), :content_type => 'image/jpg'
#attempt 3
resource.put File.open(path) {|f| f.read}, :content_type => 'image/jpg'
4

3 に答える 3

2

curl リクエストでは、PUT リクエストを介してマルチパート フォーム データを送信しているため、RestClient でも同じことを行う必要があります。

resource = RestClient::Resource.new "#{@endpoint}/#{id}", @user, @pass
resource.put :image_file => File.new(path, 'rb'), :content_type => 'multipart/form-data', :multipart => true
于 2011-11-19T14:48:25.923 に答える
1

Robustus の言うとおりです。RestClient::Payload::Multipart を使用することもできます。

ただし、Moodstocks gem (https://github.com/adelevie/moodstocks) に対してこれを求めていることがわかりました。(AFAIK)RestClientがHTTPダイジェスト認証を処理できないという別の問題があります。

そのためには、HTTParty などの別のライブラリを使用する必要があります。ここで示されているように、RestClient::Payload::Multipart を使用してペイロードを生成することもできます: https://github.com/Moodstocks/moodstocks-api/blob/master/moodstocks-api/msapi.rb

必要に応じて、cURL バインディングまたは Rufus::Verbs のいずれかを使用することもできます。

于 2011-11-23T09:47:53.707 に答える
0

要求を調べて、それらの相違点を特定する必要があります。Wiresharkを使用してトラフィックをキャプチャするか、 fiddlerまたはcharlesを介してリクエストをプロキシすることができます。

于 2011-11-17T21:22:29.267 に答える