使用vimeo api发送修补程序请求以编辑视频无法正常工作

时间:2017-07-01 04:27:39

标签: ruby http vimeo-api

我正在尝试使用ruby来发送使用vimeo api编辑视频的补丁请求。请求成功但vimeo无法读取我的有效负载(标题和描述),即标题和描述没有被更改。我使用过HTTParty,RestClient以及Net :: HTTP但它们都不起作用。以下是我实施的用于发送补丁请求的代码,

RESTClient实现

payload = {"description" => "Test Description", "name" => "Test Video"}
res = RestClient.patch(
             vimeo_edit_url, 
             payload.to_s,
             { "Authorization" => auth })

NET :: HTTP

options = {'description' => "Test Description", 'name' => "Test Video"}
edit_req = Net::HTTP::Patch.new(vimeo_edit_url, initheader = { "Authorization" => auth})
edit_req.data = options.to_s
edit_uri = URI(vimeo_edit_url)
edit_http = Net::HTTP.new(edit_uri.host, edit_uri.port)
edit_http.use_ssl = true
edit_http.verify_mode = OpenSSL::SSL::VERIFY_PEER
edit_response = edit_http.request(edit_req)

通常情况下,响应将是200 OK以及更新的视频详细信息,但我收到200 OK的视频详细信息(标题和说明未被更改)。就好像vimeo无法读取我的有效载荷一样。

1 个答案:

答案 0 :(得分:0)

您可能希望传递payload,而不是payload.to_s

.to_s正在将你精心安排的哈希变成一个奇怪的rubyified字符串,你提到的所有HTTP库都会接受一个哈希并为你处理转换。

以下是irb会话中的一些不同表示形式:

>> payload = {"description" => "Test Description", "name" => "Test Video"}
>> payload
=> {"description"=>"Test Description", "name"=>"Test Video"}
>> payload.to_s
=> "{"description"=>"Test Description", "name"=>"Test Video"}"
>> require 'json'
=> true
>> payload.to_json
=> "{"description":"Test Description","name":"Test Video"}"