FileNotfoundException при попытке проверить Foursquare с помощью Android

Я пробовал искать ответы для этого с последних нескольких дней без везения, даже некоторые из ответов stackoverflow не помогли.

Я пытаюсь проверить пользователя после получения его UserToken через Android. Я получаю FileNotfoundException в getInputStream() , не аутентифицированные API, например «https://api.foursquare.com/v2/venues/categories» работает хорошо. Я что-то упускаю?

    URL url = new URL("https://api.foursquare.com/v2/checkins/add?oauth_token="+token);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.addRequestProperty("venueId","12238");
    conn.setDoInput(true);
    conn.setRequestMethod("POST");
    conn.setAllowUserInteraction(true);
    conn.connect();
    InputStream is = conn.getInputStream();
    String response = streamToString(is);
    return response;

Это удалось решить после многих усилий. См. Мой ответ ниже.

0
nl ja de
вероятно, 404 ответ от сервера. Проверьте код ответа
добавлено автор Blackbelt, источник
браузера? Вы уверены, что вам нужно выполнить POST вместо GET?
добавлено автор Blackbelt, источник
Вероятно, проблема связана с аутентификацией. Вы пробовали c.setRequestProperty («Авторизация», «Базовый» + Base64.encode («myuser: mypass» .getBytes ()));
добавлено автор Blackbelt, источник
Итак, «conn.addRequestProperty» («siteid», «12238»); бесполезно?
добавлено автор Blackbelt, источник
Неважно. Проверьте код ответа сервера
добавлено автор Blackbelt, источник
Он хорошо работает с браузером, когда я помещаю URL.
добавлено автор Sharjeel Ahmed, источник
Я использовал плагин для браузера для значения POST.
добавлено автор Sharjeel Ahmed, источник
не требуется авторизация для Foursquare с пользователем/pass, поскольку мы не должны хранить имя пользователя и пароль пользователя, вместо этого мы используем токен
добавлено автор Sharjeel Ahmed, источник
Он добавляет свойство POST (я предполагаю), поскольку мне нужно, чтобы он проверялся.
добавлено автор Sharjeel Ahmed, источник

4 ответы

Класс HttpURLConnection вводит в заблуждение, поскольку он будет генерировать FileNotFoundException для любого кода ошибки HTTP 400 или выше.

Таким образом, это не обязательно неправильный URL (404), это может быть 400 (неудачный запрос), 403 (запрещено), 500 (внутренняя ошибка сервера) и т. Д.

Используйте getResponseCode , чтобы получить более точное указание проблемы.

1
добавлено
Вы правы в этом, это вводит в заблуждение, мне пришлось использовать браузер, чтобы получить правильный код ошибки. В следующий раз это будет иметь в виду. Но что, по вашему мнению, является причиной, когда я передаю параметры в URL-адресе, который он работает, а не через AddRequestProperty?
добавлено автор Sharjeel Ahmed, источник

Попробуйте добавить oauth_token, используя тот же метод, который вы используете для добавления eventid. Кроме того, ваш siteID недействителен, поэтому убедитесь, что вы проверяете пользователя на реальном месте.

1
добавлено
Параметр siteID, который вы написали в вашем примере, не может быть прав. Параметры идентификатора места - это длинные шестнадцатеричные строки длиной 24 символа. Вы должны попробовать составить URL-адрес вручную и использовать CURL, чтобы убедиться, что он работает. Это позволит вам проверить ответ на ошибки.
добавлено автор pfhayes, источник
Пробовал это, не работая, плюс eventId прав, поскольку я тестировал его через плагин браузера, дающий оба значения через POST
добавлено автор Sharjeel Ahmed, источник
Я пробовал этот идентификатор места в браузере и отлично работал, я попробую снова через CURL
добавлено автор Sharjeel Ahmed, источник

Okie Мне, наконец, удалось решить проблему, я не знаю, в чем проблема с моим кодом выше, но сработало.

Для этого API требуется POST-вызов, но даже идентификатор места размещения должен быть частью URL-адреса, а addRequestProperty, похоже, не правильно отправляет идентификатор места. Поэтому я изменил код на

URL url = new URL("https://api.foursquare.com/v2/checkins/add?venueId=12238&oauth_token="+token);

И это решило проблему. Спасибо всем

0
добавлено

first: Yoy have https url, and trying to create HttpURLConnection. You should use HttpsURLConnection.

Second: You can try to add conn.setDoOutput(true), "post" request requires it. And without it server can try give a get request from you despite on conn.setRequestMethod("POST"). Also you can check headers from your browser plugin, and put them into your request.

0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)