gpt4 book ai didi

java - html 的 HTTP gzip 编码

转载 作者:行者123 更新时间:2023-12-02 07:54:30 26 4
gpt4 key购买 nike

对于我的一个项目,我必须编写自己的精简版网络服务器。目前它正在做我想做的事情,但是有点......慢。至少对我来说慢一点。因此我正在考虑实现 gzip 压缩来加快速度。方法如下。

public static String encodeToGZip(String data) {
ByteArrayOutputStream bout = null;
try {
bout = new ByteArrayOutputStream();
GZIPOutputStream output = new GZIPOutputStream(bout);
output.write(data.getBytes());
output.flush();
output.close();
bout.close();
} catch (IOException ex) {
ex.printStackTrace();
}

try {
return new String(bout.toByteArray(), "UTF-8");
} catch (UnsupportedEncodingException ex) {
return null;
}
}

问题是网络服务器无法解码我发送的数据。尽管它声明它接受 gzip 编码,所以我必须发送一些损坏的数据。

这就是结果。wireshark嗅探==>GET/login.html HTTP/1.1

主机:本地主机:9090

连接:保持 Activity 状态

缓存控制:无缓存

编译指示:无缓存

用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_7_3)AppleWebKit/535.11(KHTML,如 Gecko)Chrome/17.0.963.79 Safari/535.11

接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

接受编码:gzip、deflate、sdch

接受语言:en-US,en;q=0.8

接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3

<小时/>

HTTP/1.1 200 正常

连接:关闭

服务器:My Lite Server v0

内容编码:gzip

内容类型:text/html

............T...N...0....#.......O...?...$.. ……BB……g……6……[……u……6………… …………g6e…………S……c……$……`我Gw............AOAhU...XO...d...].... IU...h...+......[.... .Y.........b...|x.........rm1.........1.....L...uI... ......S...n......F......T2.[$X.......M.....M。 #*.........d....58HL:....Wx......Z....m...t.. .Z.)'XQdg......X......~......(......<.......p/.......…………”……6|7……3...r.Sv.../...rT...".........SrJ.........M.vR^...4$。 ...q...x.................../...8...........M...y#... j......7........d..le......;.................~......的......

最佳答案

return new String(bout.toByteArray(), "UTF-8");

方法中的这一行将产生垃圾字符串。

上面的构造函数执行从给定编码到 UTF-16 的转码操作。您获取一堆任意字节并尝试将它们解码为 UTF-8。您只能将 UTF-8 编码的字符数据解码为 UTF-8。 Java没有二进制安全的字符串(所有字符串都是UTF-16);您必须使用字节数组。

只需将压缩字节写入您的OutputStream

避免使用 data.getBytes(),因为它使用默认的系统编码。这将产生不可移植的代码,因为默认系统编码取决于系统和配置。永远喜欢setting an encoding explicitly .

关于java - html 的 HTTP gzip 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com