【问题标题】:How to get response from URL in rails using httparty如何使用 httparty 从 Rails 中的 URL 获取响应
【发布时间】:2015-04-27 14:42:29
【问题描述】:

我想从上面的 URL 中获取响应数据并将值存储在数据库中。

网址:

`http://xxxx.com/delivery_reports?data=%7B%22requestId%22%3A%22546b384ce51f469a2e8b4567%22%2C%22numbers%22%3A%7B%22917566559950%22%3A%7B%22date%22%3A%222014-11-18+17%3A45%3A59%22%2C%22status%22%3A1%2C%22desc%22%3A%22DELIVERED%22%7D%7D%7D`

控制器:

def create
    @delivery_report = DeliveryReport.new(delivery_report_params)

    @response = HTTParty.get('http://xxxx.com/delivery_reports')    
    hash = JSON.parse @response
    puts hash

    respond_to do |format|
      if @delivery_report.save
        format.html { redirect_to @delivery_report, notice: 'Delivery report was successfully created.' }
        format.json { render :show, status: :created, location: @delivery_report }
      else
        format.html { render :new }
      end
    end
  end

它显示 JSON::ParserError (757: unexpected token at ' 错误。

【问题讨论】:

  • 是不是说第 757 行有语法错误?
  • 要检查的东西很愚蠢,但是您可以使用delivery_reports.json 而不是仅使用delivery_reports 吗?我认为您正在尝试将 HTML 解析为 JSON(除非应用程序正在动态检查请求标头)。
  • 您应该使用密码保护该网址并将其隐藏在公众视野之外。

标签: ruby-on-rails api ruby-on-rails-4 get httparty


【解决方案1】:

您正在尝试使用 JSON 解析无效的 JSON 文件。来自服务器的响应是 HTML。

尝试删除此行:

hash = JSON.parse @response

应该可以!

如果您需要有关所请求页面的任何信息,请使用 nokogiri gem 来解析 HTML 而不是 JSON.parse。

[编辑]

您可以尝试在 URL 上使用 /delivery_reports.json 从服务器检索为有效的 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多