我正在尝试使用外部 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/