Неверный URI на героку при использовании HTTParty

В настоящее время я получаю следующую ошибку при использовании httparty на heroku.

HTTParty работает первые 11 раз, но на 12-й раз показывает эту ошибку.

введите здесь описание изображения

Я пытаюсь ввести данные в свою базу данных.

Когда я перехожу по URL-адресу через браузер, он работает. Я запускал тот же код в разработке, и он работает. Я не знаю, что делать. Пожалуйста помоги!


person cghil    schedule 26.06.2015    source источник
comment
Похоже, Heroku ограничивает вас по скорости.   -  person Tamer Shlash    schedule 26.06.2015
comment
Неа. Это было пустое место. Как говорится в ответе ниже.   -  person cghil    schedule 29.06.2015


Ответы (2)


Вы передаете неверный URI -

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

адрес имеет пробел в URI.

Итак, куда бы вы ни передавали параметры, делайте -

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

"#{uri_path}?#{params.to_param}"
person Amit Suroliya    schedule 26.06.2015
comment
Почему URI недействителен? URL работает в браузере и в разработке? - person cghil; 26.06.2015
comment
параметр с пробелом не распознается браузером. Браузер использует пробел на + или %20, например https://maps.googlemaps.com/maps/api/geocode/json?address=San%20Fransisco. Метод rails to_params делает это. - person Amit Suroliya; 26.06.2015

Амит Суролия был прав. Я также использовал 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', обратите внимание на пробел между Michelle и Obama. Из-за интерполяции HTTParty.get('string') неверен.

Решение:

Замените все пробелы в вашей строке на +, или вы можете использовать %20.

Я использовал query.gsub!(' ', '+')

Дополнительную информацию о пробелах в URL-адресах см. здесь: Пробелы в URL-адресах?

person brayzen    schedule 08.01.2016
comment
Рассмотрите возможность использования только той информации, которая решает вопрос. Можно ли удалить все до РЕШЕНИЯ? - person user3071284; 09.01.2016