外部 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)
ただし、address
中国語なので、UTF-8 コードに変換する必要がありますURI::InvalidURIError (bad URI(is not URI?):
。
試してみ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']
そして私は得るcan't convert HTTParty::Response into String
。どうしたの?
ここで何かを見つけました。JSON で解析するように Httparty に明示的に指示する必要があると思いますか?