【问题标题】:Bad URI on heroku when using HTTParty使用 HTTParty 时 heroku 上的错误 URI
【发布时间】:2015-06-26 05:10:24
【问题描述】:

我目前在 heroku 上使用 httparty 时遇到以下错误。

HTTParty 前 11 次有效,但第 12 次显示此错误。

我正在尝试将数据播种到我的数据库中。

当我通过浏览器访问 URL 时,它可以工作。我在开发中运行了相同的代码,它可以工作。我不确定该怎么做。请帮忙!

【问题讨论】:

  • 看起来 Heroku 正在限制您的速率。
  • 不。那是空白处。就像下面的答案一样。

标签: ruby-on-rails ruby heroku httparty heroku-postgres


【解决方案1】:

你传递了无效的 URI -

"https://maps.googlemaps.com/maps/api/geocode/json?address=San Fransisco"

地址在 URI 中有空格。

所以,无论你传递参数,Do -

uri_path = https://maps.googlemaps.com/maps/api/geocode/json
params = {address: "San Fransisco",...............}

"#{uri_path}?#{params.to_param}"

【讨论】:

  • URI无效怎么办?它工作 URL 在浏览器和开发中工作?
  • 浏览器无法识别带空格的参数。浏览器通过“+ 或 %20”使用空间,例如 https://maps.googlemaps.com/maps/api/geocode/json?address=San%20Fransisco。 rails to_params 方法做到这一点。
【解决方案2】:

Amit Suroliya 是正确的。我也在使用 HTTParty,它正在通过 Curl 和 Development 工作,但在生产中会崩溃。因为 HTTParty 参数是文字 URL(作为字符串),所以它必须是完美的 URL/URI(意味着没有空格)。我的bad URI如下:

HTTParty.get("http://api.blahblahblah.com/v1/Boards/Search?&limit=79&query=#{query}&filter_date_from=1423353600")

注意插值query=#{query}"

所以如果是query='Michelle Obama',请注意MichelleObama 之间的空格。由于插值,HTTParty.get('string') 是不正确的。

解决方案

将字符串中的所有空格替换为+,或者您可以使用%20

我用query.gsub!(' ', '+')

有关 URL 中空格的更多信息,请在此处查看:Spaces in URLs?

【讨论】:

  • 考虑仅使用解决问题的信息。可以删除“SOLUTION”之前的所有内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2016-11-11
  • 2012-07-08
  • 2012-04-09
  • 1970-01-01
相关资源
最近更新 更多