如何使用httparty从rails中获取URL响应

时间:2015-04-27 14:42:30

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

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

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:'错误的意外令牌。

1 个答案:

答案 0 :(得分:1)

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

尝试删除此行:

hash = JSON.parse @response

应该工作!

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

[编辑]

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