Я посмотрел на другие подобные посты, но ничего очевидного не выпрыгивает. Я уверен, что кто-то укажет мне правильное направление, если я пропустил это!
Проблема в том, что этот код в моем приложении работал, но больше не работает. Поэтому я предполагаю, что что-то изменилось на сайте. Я использую точно такой же код для трех других сайтов в том же приложении, и они работают нормально. LOGCAT показывает следующую ошибку:
org.jsoup.HttpStatusException: ошибка HTTP при получении URL. Статус = 403, URL =http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php
Я сделал эту простую веб-страницу, которую я могу запустить с локального диска, и она работает (если вы попробуете это самостоятельно, вам нужно настроить дату и время на текущее время UTC):
<form method="post" action="http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php">
Enter aerodrome ID(s)
<input type="text" name="AERO_Tab_Aero[0]">
<input type="hidden" name="AERO_Date_DATE" value="2016/01/25">
<input type="hidden" name="AERO_Date_HEURE" value="07:12">
<input type="hidden" name="bResultat" value="true">
<input type="hidden" name="ModeAffichage" value="COMPLET">
<input type="hidden" name="AERO_Duree" value="96">
<input type="hidden" name="AERO_CM_REGLE" value="1">
<input type="hidden" name="AERO_CM_GPS" value="2">
<input type="hidden" name="AERO_CM_INFO_COMP" value="1">
<p>
<input type="Submit" value="Get the bulletins">
</p>
</form>
Этот код возвращает ошибку:
doc = Jsoup.connect("http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php")
.data("bResultat", "true").data("ModeAffichage", "COMPLET")
.data("AERO_Date_DATE", date).data("AERO_Date_HEURE", time).data("AERO_Duree", "96").data("AERO_CM_REGLE", "1").data("AERO_CM_GPS", "2")
.data("AERO_CM_INFO_COMP", "1").data("AERO_Tab_Aero[0]", params[0].substring(0, params[0].length() - 1))
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36")
.timeout(6000).post();
Мысли?
РЕДАКТИРОВАНИЕ № 1:
Заголовки, которые я вижу, когда использую мою мини-страницу:
ЗАПРОСИТЬ ЗАГОЛОВОКИ
Accept: Текст / HTML, приложение / XHTML + XML, приложение / XML; д = 0,9, образ / WebP,/; Д = 0,8Accept-Encoding: gzip, deflate
Accept-Language: EN-US, ан; д = 0,8, АС-ен; д = 0,6
Cache-Control: макс возраста = 0
Подключение: держать-жив
Content-Length: 180
Content-Type: применение / х-WWW-форм-urlencoded
Ведущий: notamweb.aviation-civile.gouv.fr
Происхождение: нулевая
Обновление нестабильным-запросов: 1
Пользователь-агент: Mozilla / 5.0 (Windows NT 6.1;
WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 47.0.2526.111
Safari / 537,36ФОРМА ДАННЫХ
AERO_Tab_Aero [0]: KLAX
AERO_Date_DATE: 2016/01/25
AERO_Date_HEURE: 11: 21
bResultat: правда
ModeAffichage: COMPLET
AERO_Duree: 96
AERO_CM_REGLE: 1
AERO_CM_GPS: 2
AERO_CM_INFO_COMP: 1
Помогая идее от JonasCz:
Чтобы исправить это, загрузите страницу в браузере своего компьютера и просмотрите вкладку сети инструментов разработчика, чтобы увидеть, что именно она отправляет, особенно файлы cookie и заголовки. Я предполагаю, что вам нужно отправить другие / дополнительные файлы cookie или заголовок Referer, поскольку веб-сайт может проверять это, а затем отправлять такие же или похожие заголовки / файлы cookie по вашему запросу.
Проблема была решена. Проблема в том, что часы на эмуляторе были неверными, что вызвало отклонение запроса