当前位置: 首页 > article >正文

JAVA HttpUrlConnection 使用 GZIP 编码压缩

By default, when you make a request to URL, the response is not compressed.

默认情况下,当你在URL创建一个request 请求,response响应是不压缩的。

比如,代码:

import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpConnect {
    public static void main(String[] args) throws Exception {
      URL url = new URL("http://www.rgagnon.com/howto.html");
      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      // con.setRequestProperty("Accept-Encoding", "gzip");
      System.out.println("Length : " + con.getContentLength());
      Reader reader = new InputStreamReader(con.getInputStream());
      while (true) {
        int ch = reader.read();
        if (ch==-1) {
          break;
        }
        System.out.print((char)ch);
      }
    }
}

From the response, we see that the length is 21740 bytes. 

从响应内容,我们看到长度是21740字节。

Length : 21740
<!DOCTYPE HTML>
<HTML>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <LINK REL="SHORTCUT ICON" HREF="http://www.rgagnon.com/favicon.ico">
      <META NAME="description"
            Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets">
      <META NAME="keywords"
      Content="java,javascript,wsh,vbscript,how-to,powerbuilder">
...

By setting the Request Header "Accept" to "gzip", we are telling to the server that we want the response to be compressed if possible with the GZIP compression scheme. If it's not supported by the server then the response will be sent as plain text.

通过设置request header 的属性“Accept” 为“gzip”,我们告诉服务器在可能Gzip压缩的情况下我们想要服务器压缩响应。如果服务器不支持压缩应当以纯文本发送响应。

import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;


public class HttpConnect {
    public static void main(String[] args) throws Exception {
      URL url = new URL("http://www.rgagnon.com/howto.html");
      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      con.setRequestProperty("Accept-Encoding", "gzip");
      System.out.println("Length : " + con.getContentLength());
      Reader reader = new InputStreamReader(con.getInputStream());
      while (true) {
        int ch = reader.read();
        if (ch==-1) {
          break;
        }
        System.out.print((char)ch);
      }
    }
}

Now the response length is 4865 but the content is not readable because we need to uncompress it!

现在响应长度是4865,但是内容不可读因为我们需要jie压缩!


http://www.kler.cn/a/287324.html

相关文章:

  • 最优化方法_罚函数法例题
  • 统信UOS开发环境支持Golang
  • C# 异常处理、多个异常、自定义异常处理
  • 【电子设计】按键LED控制与FreeRTOS
  • 大模型呼叫中心,如何建设呼入机器人系统?
  • VSCode 常用的快捷键
  • 学习如何更好向GPT提问
  • 从跟跑到领跑:AIGC时代国产游戏的崛起与展望
  • SpringCloud乐尚代驾学习笔记:项目概述(一)
  • prometheus download all
  • PMC如何建立有效的监控系统来及时发现生产计划的偏离?
  • git version 2.37.0 如何删除远程分支
  • 【单片机开发】单片机的烧录方式详解(ICP、IAP、ISP)
  • Datawhale X 李宏毅苹果书 AI夏令营 Task 3
  • 介绍一下KAFKA的ACK机制?
  • 2024前端面试题分享
  • 【mac】MAC命令快速模糊查找文件
  • 遥控器新手操作指南!!!
  • rabbitmq高可用集群搭建
  • 经常失眠、多梦、易惊醒?这个调养好物,助你找回婴儿睡眠~
  • 郑州建站网页手机版
  • 安全升级:Docker部署Redis,启用密码验证
  • 算法基础-区间合并
  • Gartner首次发布AI代码助手魔力象限,阿里云进入挑战者象限,通义灵码产品能力全面领先
  • 数学基础 -- 线性代数之线性变换
  • 美股DT有没有程序化软件或者指标选股工具