我正在尝试使用Ruby中的Rest-Client gem进行POST,并且我不断从Web服务返回Error 414 Unsupported Media Type,因为我将有效负载参数设置为''
实施例
RestClient.post 'https://username:password@remotesystem/api/v1/applications/44204093/publishUpdates','' ,:accept => 'json'
问题是Web服务不需要或不需要此资源的有效负载,但RestClient认为需要指定一个。
任何人都知道如何使用rest客户端发帖,而不必指定有效负载参数?
感谢
答案 0 :(得分:0)
对于帖子我相信该方法是url,payload,header
url = 'https://username:password@remotesystem/api/v1/applications/44204093/publishUpdates'
header = {'Accept' => 'application/json'}
RestClient.post url, {}, header
这不是我的头脑,但这也让我感到高兴。
答案 1 :(得分:0)
Gem是rest-client 1.8.0,最新稳定的。 我也收到了这个错误 RestClient :: UnsupportedMediaType:415不支持的媒体类型 来自/Users/Ben/.rvm/gems/ruby-2.1.5@caredox/gems/rest-client-1.8.0/lib/restclient/abstract_response.rb:74:in`return!'
用于呼叫帖子和响应是JSON
RestClient.post(url,
{
:arg1 => var1
},
{:Authorization => "Bearer blahblah",
:content_type => :json,
:accept => :json
}
)
答案 2 :(得分:-1)
这在红宝石2.4中开始发生。对于相同版本的rest-client,Ruby 1.9没有这个问题。如果在调用中未指定有效负载,则将内容类型标头设置为“application / x-www-form-urlencoded”,这会导致服务器说“无操作匹配请求路径...”并返回'415 Unsupported媒体类型'。解决方案是在调用中将content-type明确设置为nil:
RestClient::Request.execute(:url => query, :ssl_version => 'TLSv1', :method => 'post', :headers => {'Content-Type' => nil})