我尝试了各种口味,并且都给出了令人满意的结果。 但是浏览器上的响应看起来不错。 (干净的json字符串)
FullHttpResponse response = (FullHttpResponse) msg;
byte[] bytes = new byte[response.content().readableBytes()];
response.content().readBytes(bytes);
String result = new String(bytes);
我按照建议的here尝试的另一个是
response.content().toString(CharsetUtil.UTF_8);
两者都是这样的胡言乱语
PS:我在管道中使用HttpObjectAggregator和HttpServerCodec
答案 0 :(得分:1)
由于您正在处理FullHttpResponse
的实例,因此您最有可能查看压缩的数据,并且当今大多数服务器都使用压缩,因此很有可能压缩了数据。
要查看压缩背后的压缩算法,您应该查看response.headers().get(HttpHeaders.Names.CONTENT_ENCODING)
这可以返回差值的组合(如果有多个记录,则用,
分隔):
gzip
:使用GZip压缩数据identity
:未进行压缩br
:使用brotli压缩数据使用FullHttpResponse
的一个优点是您不必担心正在使用的传输编码,因为它可以为您处理。