Geocoding API's response was not valid JSON. and request.location = nil

两盒软妹~` 提交于 2019-12-22 04:39:19

问题


if Rails.env.development?
      @current_location_geo = Geocoder.search(request.remote_ip).first
    else
      @current_location_geo = request.location
    end
    if !@current_location_geo.nil? && @current_location_geo.ip == "127.0.0.1"
      @departure_currency_code= "AUD"
      @departure_currency_name= ["Australian Dollar(AUD $)","AUD"]
    else
      @country = Country.new(request.location.data["country_code"].to_s)
      @country_code = @country.currency.code
    end
end

i am getting request.location nil. i tried to add timeout in configuration but it not helped for me.

error in production mode as "Geocoding API's response was not valid JSON."

and when i traced it i got request.location as nil.

my geocoder version is (1.2.6).


回答1:


config/initalizers/geocoder.rb

Geocoder.configure(
 timeout: 10,
 ip_lookup: :telize   
)

Source: https://github.com/alexreisner/geocoder/issues/777




回答2:


It seems that you just have no available action points to access to selected geo services. For me it was too small amount of available requests to Google geo services. I just increated it by registering on Google application serivces, and putting into config Google API key. For services, which determine Geo position by IP, it was recommended :telize since it does not have any request quotas currently by previous answerer. I also advice you to see into side of local IP storage to resovle them to Geo position, like :geoip2, and :maxmind_local. So your geoconfig will be like follows:

config/initalizers/geocoder.rb:

Geocoder.configure(                             
  lookup: :google,                                                 
  ip_lookup: :geoip2,                                                              
  maxmind_local: {
    package: :city                
  },                                                       
  geoip2: {
    file: File.join('vendor/share', 'GeoLite2-City.mmdb')
  },             
  google: {                        
    timeout: 20,
    use_https: true,                                                               
    api_key: ENV['GOOGLE_API_KEY']                                                 
  },       
}

NOTE: It seems that :telize service currently isn't properly working, returning: Geocoding API's response was not valid JSON.

Please refer to all options to configure goe services on geocoder's README.



来源:https://stackoverflow.com/questions/27437364/geocoding-apis-response-was-not-valid-json-and-request-location-nil

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!