Ruby Net::HTTP::Post覆盖自定义内容类型头

Ruby Net::HTTP::Post覆盖自定义内容类型头,ruby,rest,http,post,Ruby,Rest,Http,Post,Ruby的Net::HTTP::Post似乎覆盖了自定义内容类型头。当我设置标题'Content-Type':'application/json'时,我从服务器收到以下错误: HTTP Status 400 - Bad Content-Type header value: 'application/json, application/x-www-form-urlencoded' 注意应用程序/x-www-form-urlencoded为什么在那里?有没有办法将其删除? 我的代码: def po

Ruby的
Net::HTTP::Post
似乎覆盖了自定义内容类型头。当我设置标题
'Content-Type':'application/json'
时,我从服务器收到以下错误:

HTTP Status 400 - Bad Content-Type header value: 'application/json, application/x-www-form-urlencoded'
注意
应用程序/x-www-form-urlencoded
为什么在那里?有没有办法将其删除?

我的代码:

def post(uri, params)
  req = Net::HTTP::Post.new(uri.path, 'Content-Type':'application/json')
  req.form_data = params
  Net::HTTP.start(uri.hostname, uri.port) {|http|
    http.request(req)
  }
end
有趣的是,下面的代码使用
Net::HTTP采用不同的方法工作:

def post(uri, params)
  headers = {'Content-Type' =>'application/json'}
  request = Net::HTTP.new(uri.host, uri.port)
  request.post(uri.path, params.to_json, headers)
end

原因是在您显式设置请求的第一个代码段中

req.form_data = params
表格是


可能您最好设置
body
或显式地在中设置。

原因在于您显式地设置
请求的第一个代码段。表单\u data

req.form_data = params
表格是

可能您最好设置
body
或在中显式设置