【问题标题】:Problem of reading data from a website从网站读取数据的问题
【发布时间】:2010-11-22 23:17:08
【问题描述】:

我编写了一个应用程序,用于解析来自机场网站 - Sheremetyevo (http://svo.aero/timetable/today/) 和 Domodedovo (http://www.domodedovo.ru/ru/main/) 的数据空气指示器/飞行新/)。

我用站点的链接创建了一个对象 URL。接下来,我调用方法 openStream。之后,此流与解析器 HTMLEditorKit 一起使用。

使用 Domodedovo 效果很好,但使用谢列梅捷沃机场程序时表现异常。首先,应用程序启动一定次数失败 - 流包含未知编码的符号,并且文本的长度明显小于实际页面的内容。然后意想不到的事情发生了——几次成功的运行,返回了所需的数据——然后又是一系列的挫折。它取决于什么?我无法追踪这个。

我试图通过 URLConnection 发送特定的 http-headers,希望它们中的整个内容,就像在浏览器中一样,一切都可以正常打开。但这并没有帮助。情况没有改变。

可能是什么问题?

附:我的英语不是很好,很抱歉。

【问题讨论】:

  • 可能是字符编码设置不正确。这可以解释消息不一致的长度。

标签: java stream html-parsing


【解决方案1】:

问题解决了。

所有这一切都是因为服务器在将数据发送到应用程序时对其进行了压缩。

来自服务器的http头:

Request Version: HTTP/1.1 
Response Code: 200 
Date: Mon, 22 Nov 2010 23:43:53 GMT 
Server: Apache/1.3.37 (Unix) mod_deflate/1.0.21 mod_accel/1.0.34 mod_ssl/2.8.28 OpenSSL/0.9.8e rus/PL30.22
Expires: Mon, 22 Nov 2010 23:44:44 GMT
Content-Encoding: gzip <-- !!!
Connection: close
Transfer-Encoding: chunked

因此,如果您使用 GZIPInputStream,就可以读取数据。

可能有人发现所有这些信息对自己有帮助。

【讨论】:

    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    相关资源
    最近更新 更多