ruby-on-rails - rails : How to send a http get request with UTF-8 encoding

标签 ruby-on-rails utf-8 httprequest httparty

我正在尝试使用外部 API 来获取一些信息

  address=self.address
  response = HTTParty.get("http://api.map.baidu.com/geocoder/v2/?address=#{address}&output=json&ak=5dfe24c4762c0370324d273bc231f45a")
  decode_response =  ActiveSupport::JSON.decode(response)

但是地址是中文的,所以我需要转换成UTF-8编码, 如果不是,我会得到 URI::InvalidURIError (bad URI(is not URI?): How do it?

我尝试了address=self.address.force_encoding('utf-8'),但它不起作用,也许我应该使用其他方法?

更新:

  uri = "http://api.map.baidu.com/geocoder/v2/?address=#{address}&output=json&ak=5dfe24c4762c0370324d273bc231f45a"
  encoded_uri = URI::encode(uri)
  response = HTTParty.get(encoded_uri)
  decode_response =  ActiveSupport::JSON.decode(response)
  self.latitude = decode_response['result']['location']['lat']

我得到无法将 HTTParty::Response 转换为字符串。这是怎么回事?

I found something here ,我想我需要明确告诉 Httparty 用 JSON 解析它?

最佳答案

您可以将其保存到文件“geo.rb”并运行ruby geo.rb

require 'uri'
require 'httparty'

address = "中国上海"
uri = "http://api.map.baidu.com/geocoder/v2/?address=#{address}&output=json&ak=5dfe24c4762c0370324d273bc231f45a"
encoded_uri = URI::encode uri
puts HTTParty.get(encoded_uri)

关于ruby-on-rails - rails : How to send a http get request with UTF-8 encoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158126/

相关文章:

区间上的 JavaScript 函数不稳定

php - 确保字符串是 UTF-8 编码的

python - 如何将编码值存储到数据库中

javascript - NoMethodError(#<Array :0x0000563ea01dba98>): 的未定义方法 `permit'

ruby-on-rails - 首先使用 `joins()` 进行 INNER JOIN 然后是下一个表的 LEFT JOIN

c++ - QFileInfo 和 UTF-8

http - REST Web 服务 (JERSEY) 中 POST HTTP 请求的处理参数

java - 在 doFilter 中获取 httpservletrequest,无需从 ServletRequest 进行类型转换

java - 无法配置 Unirest 请求正文

ruby-on-rails - rails 4 : get an image full url generated by Sprockets in production environment (inside rake task)