如何使用 Content-Encoding 读取压缩的 HTML 页面:gzip

2023-11-22

我请求一个发送内容编码:gzip标题,但卡住了如何阅读它..

My code:

    try {
        URLConnection connection = new URL("http://jquery.org").openConnection();                        
        String html = "";
        BufferedReader in = null;
        connection.setReadTimeout(10000);
    in = new BufferedReader(new InputStreamReader(connection.getInputStream()));            
    String inputLine;
    while ((inputLine = in.readLine()) != null){
    html+=inputLine+"\n";
        }
    in.close();
        System.out.println(html);
        System.exit(0);
    } catch (IOException ex) {
        Logger.getLogger(Crawler.class.getName()).log(Level.SEVERE, null, ex);
    }

输出看起来非常混乱..(我无法将其粘贴到这里,一种符号..)

我相信这是一个压缩内容,如何解析它?

Note:
如果我将 jquery.org 更改为 jquery.com (不发送该标头,我的代码运行良好)


实际上,这是 pb2q 的答案,但我为未来的读者发布了完整的代码

try {
    URLConnection connection = new URL("http://jquery.org").openConnection();                        
    String html = "";
    BufferedReader in = null;
    connection.setReadTimeout(10000);
    //The changed part
    if (connection.getHeaderField("Content-Encoding")!=null && connection.getHeaderField("Content-Encoding").equals("gzip")){
        in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connection.getInputStream())));            
    } else {
        in = new BufferedReader(new InputStreamReader(connection.getInputStream()));            
    }     
    //End        
    String inputLine;
    while ((inputLine = in.readLine()) != null){
    html+=inputLine+"\n";
    }
in.close();
    System.out.println(html);
    System.exit(0);
} catch (IOException ex) {
    Logger.getLogger(Crawler.class.getName()).log(Level.SEVERE, null, ex);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Content-Encoding 读取压缩的 HTML 页面:gzip 的相关文章

  • 用 @DataJpaTest 注释的测试不是用 @Autowired 注释的自动装配字段

    我有一个 Spring Boot 应用程序 其中包含 Spring Data Jpa 存储库 我需要围绕这个存储库运行单元 或组件 测试 我对 Spring Data Jpa 没有太多经验 这是我的测试 这很简单 我无法让它通过 impor
  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 将秒转换为天、分钟和秒

    我已经设置了将秒转换为天 分钟和秒格式的 挑战 例如 31600000 365 天 46 分钟 40 秒 using namespace std const int hours in day 24 const int mins in hou
  • 是否可以在“某处”添加一个 `before(:each)` 挂钩,以便所有规范文件都可以运行它?

    我正在使用 Ruby on Rails 3 2 2 和 rspec rails 2 8 1 为了制作我的规格文件DRY 不要重复自己 并播种test数据库我想运行一个before each 挂钩所有这些规范文件 也就是说 在我的所有规范文件
  • 一种更Pythonic的迭代列表的方法,同时在每次迭代中排除一个元素

    我有以下代码 items one two three for i in range 0 len items for index element in enumerate items if index i do something with
  • 如何使用 javascript 获取重定向 url?

    我在使用我正在使用的自动化工具显示带有重定向的网址时遇到问题 因此我考虑在打开弹出窗口之前先检查重定向的网址 是否可以使用 javascript 获取重定向 URL 没有 jquery 或其他 js 框架 因为该工具不支持此功能 Thank
  • Linux命令以树的形式打印目录结构

    是否有任何我可以从 Bash 脚本调用的 linux 命令 该命令将以树的形式打印目录结构 例如 folder1 a txt b txt folder2 folder3 这就是您要找的吗tree 它应该存在于大多数发行版中 也许作为可选安装
  • 我可以假设 sizeof(uint8_t) = 1 吗?

    我有一个程序 对 uint8 t 数组使用动态分配 我可以安全吗 假设它的长度总是一个字节 If uint8 t存在 那么sizeof uint8 t 必须是 1 uint8 t is required宽度恰好为 8 并且没有填充位 并且C
  • 使用 browserify 填充 jQuery 插件

    您好 我正在使用 grunt browserify 任务来设置我的代码 我已经在 jQuery 中进行了填充 现在我正在尝试包含 jquery tablesorter jquery插件可以这样与browserify一起使用吗 shim jq
  • PerformSelector:withObject:afterDelay:无法从scrollViewDidZoom工作

    我觉得我应该知道这一点 但我已经被难住了好几个小时 而且我已经没有想法了 原理很简单 用户使用捏合操作来操纵滚动视图中的缩放和定位 如果他们捏捏的时间很短 那么滚动视图就会记录缩放级别和内容偏移量 所以我想我应该在scrollViewDid
  • 类的 mro 方法和 __mro__ 属性有什么区别?

    我偶然发现了这个额外的 无下划线的mro我使用时的方法 metaclass abc ABCMeta 似乎是一样的 mro 只是它返回一个列表而不是元组 这是一个随机示例 创意片段 import abc import copy class L
  • 如何在 Ruby 中临时重定向 stderr?

    我想在一个块的持续时间内临时重定向 Ruby 脚本中的 stderr 确保在块结束时将其重置为其原始值 我很难在 ruby 文档中找到如何做到这一点 在红宝石中 stderr指的是输出流目前使用的作为标准错误 而STDERR is the
  • 如何使用 OnItemClick 从列表视图中检索单击的字符串?

    我这里有一些问题 它看起来很简单 我一直在寻找它的解决方案 不幸的是 我找不到任何东西 这是我的问题 我想做的是从项目单击方法中获取列表视图中显示的字符串 这是我的列表视图 lol hi waw 当我单击 lol 时 我想获取 lol 字符
  • 容器视图控制器 - 通知父级操作

    假设我有一个自定义容器视图控制器 MainViewController 我在其中执行如下操作 void viewDidLoad super viewDidLoad HomeViewController homeVC HomeViewCont
  • C++ 保留字作为 C 结构体中的函数指针名称

    我怀疑我已经知道这个问题的答案 但我很好奇是否有专家有任何技巧 我有一个旨在成为 C 框架的 C 库 未使用不安全函数 类似的跨平台命名约定等 这工作得很好 直到我尝试在 C 项目中使用它 其中 C 命名空间 函数名称与 C 保留字冲突 在
  • 在 ListView 顶部显示新项目

    我正在使用列表来填充 ListView 用户可以将项目添加到列表中 但是 我需要将项目显示在 ListView 的顶部 如何在列表开头插入项目以便以相反顺序显示它 默认情况下列表在底部添加元素 这就是为什么您添加的所有新元素都会显示在底部
  • python: Windows 相当于 SIGALRM

    我有这个装饰器 def timed out timeout def decorate f if not hasattr signal SIGALRM return f def handler signum frame raise Timed
  • 获取 Google 访问令牌

    要在 firebase 身份验证登录后获取 Google 访问令牌 我知道我可以简单地执行以下操作 firebase auth signInWithPopup provider then function result var token
  • 信誉良好的地理 IP 定位服务 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 谁是一些信誉良好和 或稳定的地理 IP 定位服务提供商 我正在指定一个需要此功能的应用程序 每当我搜索 geo ip 时 我都会得到大量的点击 但很
  • 如果 Sql Compact 允许多个连接,为什么我会收到文件共享错误?

    Here据说Sql Server Compact最多允许256个连接 但是当我尝试打开 2 个连接时 我收到文件共享错误 我该如何解决这个问题 SqlCeConnection c1 new SqlCeConnection Data Sour
  • 如何在 Quarkus 应用程序中设置 H2 数据库控制台 url

    Spring boot 应用程序提供了一个属性来设置 H2 数据库的 Web 控制台 URL spring h2 console path h2 有没有办法在 Quarkus 应用程序中设置相同的属性 如果不是那么默认是什么 Web 控制台
  • 如何使用 Content-Encoding 读取压缩的 HTML 页面:gzip

    我请求一个发送内容编码 gzip标题 但卡住了如何阅读它 My code try URLConnection connection new URL http jquery org openConnection String html Buf