【问题标题】:error passing json in rails (JSON::ParserError) "757: unexpected token in rails在 Rails 中传递 json 时出错(JSON::ParserError)“757:rails 中出现意外标记
【发布时间】:2012-12-10 11:18:10
【问题描述】:

我正在尝试从另一个 url 发出请求,该请求使用 json 响应回调到我的 railsapp,我在此过程中收到以下错误

  757: unexpected token at 'https://voguepay.com/?v_transaction_id=demo-1355137288&type=json'
  json (1.7.5) lib/json/common.rb:155:in `parse'

我的控制器动作如下

  def get_response
    @transaction_id = params[:transaction_id]
    response = JSON.parse("https://voguepay.com/?v_transaction_id=#{@transaction_id}&type=json").body
  end

知道我做错了什么

我直接在控制台窗口中尝试了 url,但我得到了同样的错误 网址是 https://voguepay.com/?v_transaction_id=demo-1345109950&type=json

【问题讨论】:

  • 您正在尝试解析 URL。 JSON.parse(open("...").body) 如果你使用的是 open-uri 你需要阅读响应,你甚至没有发送请求。
  • @injekt 刚刚向您展示了如何操作。
  • 这个问题不需要投反对票
  • 如果我使用 open,我不会得到这样的文件或目录,如果我使用 open-uri,我会得到错误的参数数量(0 代表 3)。任何知道答案的人,所以请创建一个答案。

标签: ruby-on-rails ruby-on-rails-3 json ruby-on-rails-3.1 ruby-on-rails-3.2


【解决方案1】:

我决定使用typhoeus gemyajl-ruby gem。这一切对我来说都很好,并决定在下面分享我的解决方案。

  def notify
    @transaction_id = params[:transaction_id]
    hydra = Typhoeus::Hydra.new
    request = Typhoeus::Request.new("https://voguepay.com/?v_transaction_id=#{@transaction_id}&type=json")
    request.on_complete do |response|
      transaction = Yajl::Parser.parse(response.body)
    end
    hydra.queue(request)
    hydra.run
  end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 2020-06-28
    • 2017-04-03
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    相关资源
    最近更新 更多