我看过其他类似的帖子,但没有明显的跳出来。如果我错过了,我相信有人会指出我正确的方向!
问题是我的应用程序中的这段代码曾经工作但不再存在。所以我假设网站上发生了一些变化。我在同一个应用程序中使用与其他三个网站完全相同的代码,它们工作正常。 LOGCAT显示以下错误:
org.jsoup.HttpStatusException:HTTP错误提取URL。状态= 403,网址= 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: 我在使用迷你网页时看到的标题是:
请求标题 接受:text / html的,应用/ XHTML + xml的,应用/ XML; Q = 0.9,图像/ WEBP, / 的; Q = 0.8
Accept-Encoding:gzip,deflate
Accept-Language:en-US,en; q = 0.8,en-AU; q = 0.6
缓存控制:最大年龄= 0
连接:保持活力
的Content-Length:180
内容类型:应用/ X WWW的窗体-urlencoded
主持人:notamweb.aviation-civile.gouv.fr
产地:空
升级 - 不安全请求:1
User-Agent: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年1月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
答案 0 :(得分:1)
问题解决了。问题是模拟器时钟错误导致网页拒绝请求。
答案 1 :(得分:0)
从JonasCz提供帮助:
解决此问题的方法是在桌面浏览器中加载页面,然后查看开发人员工具的网络选项卡,以查看其发送的确切内容,尤其是Cookie和标头。我的猜测是你需要发送其他/额外的cookie,或者可能是Referer标题,因为网站可能正在检查这个,然后在你的请求中发送相同或类似的标题/ cookie。