【问题标题】:Changing Content-Type to JSON using HTTParty使用 HTTParty 将 Content-Type 更改为 JSON
【发布时间】:2011-05-27 15:07:50
【问题描述】:

我正在尝试使用 Ruby on Rails 与 Salesforce API 进行通信。我可以很容易地获取数据,但是我在将数据发布到服务器时遇到了问题。根据 Quinton Wall 的帖子,我正在使用 HTTParty:

https://github.com/quintonwall/omniauth-rails3-forcedotcom/wiki/Build-Mobile-Apps-in-the-Cloud-with-Omniauth,-Httparty-and-Force.com

但我似乎能够从 Salesforce 服务器获得的只是我将正文提交为 html 的错误

{"message"=>"此资源不支持 'application/x-www-form-urlencoded' 的媒体类型", "errorCode"=>"UNSUPPORTED_MEDIA_TYPE"}

负责的代码如下:

require 'rubygems'
require 'httparty'

class Accounts
  include HTTParty
  format :json

  ...[set headers and root_url etc]

  def self.save
    Accounts.set_headers
    response = (post(Accounts.root_url+"/sobjects/Account/", :body => {:name => "graham"}.to_json))
  end
end

任何人都知道为什么应该将正文发布为 html 以及如何更改它以使其绝对以 json 格式发布,以便销售人员不会拒绝它?

任何帮助将不胜感激。干杯

【问题讨论】:

    标签: ruby-on-rails salesforce httparty


    【解决方案1】:

    Content-Type 标头需要设置为“application/json”。这可以通过将 :headers => {'Content-Type' => 'application/json'} 作为参数插入 post 来完成,即:

    response = post(Accounts.root_url+"/sobjects/Account/", 
      :body => {:name => "graham"}.to_json,
      :headers => {'Content-Type' => 'application/json'} )
    

    【讨论】:

    【解决方案2】:

    您必须将 Content-Type 标头设置为 application/json。我没有使用 HTTParty,但看起来你必须做类似的事情

    response = (post(Accounts.root_url+"/sobjects/Account/", :body => {:name => "graham"}.to_json) , :options => { :headers => { 'Content-Type' => 'application/json' } } )
    

    我有点惊讶格式选项不会自动执行此操作。

    【讨论】:

    • 干杯。我发现如果我只是在请求上方添加行标题 'Content-Type' => "application/json" ,那么这似乎也可以解决问题。即使正文设置为 json,它也必须默认为 html。感谢您的帮助
    • to_json 调用是否可能混淆了正文的格式?我看到的其他例子没有这样做。
    • 有趣。如果我将其关闭,则会收到 json 解析错误:{“message”=>“无法识别的令牌 'naegaa':在 [line:1, column:23] 处期待 'null'、'true' 或 'false'”, "errorCode"=>"JSON_PARSER_ERROR"}
    • 奇怪的是,它在日志中说 Content-Type 已发送,但如果您将其手动放入标题中,正文会有所不同,奇怪,对我来说听起来像是一个错误
    猜你喜欢
    • 2020-10-05
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2011-01-23
    • 2018-07-17
    • 2012-07-28
    相关资源
    最近更新 更多