微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用HTTParty将Content-Type更改为JSON

如何解决使用HTTParty将Content-Type更改为JSON

|| 我正在尝试使用Ruby on Rails与Salesforce API进行通信。我可以很容易地获取数据,但是在将数据发布到服务器时遇到了问题。根据昆顿墙的帖子,我正在使用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 \'的MediaType \”,\“ 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一样出现,以便Salesforce不会拒绝它? 任何帮助,将不胜感激。干杯     

解决方法

        您必须将Content-Type标头设置为application / json。我还没有使用HTTParty,但看起来您必须做类似的事情
response = (post(Accounts.root_url+\"/sobjects/Account/\",:body => {:name => \"graham\"}.to_json),:options => { :headers => { \'Content-Type\' => \'application/json\' } } )
我有点惊讶format选项不会自动执行此操作。     ,        Content-Type标头需要设置为\“ application / json \”。这可以通过插入:headers => {\'Content-Type \'=> \'application / json \'}作为要发布的参数来完成,即:
response = post(Accounts.root_url+\"/sobjects/Account/\",:body => {:name => \"graham\"}.to_json,:headers => {\'Content-Type\' => \'application/json\'} )
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。