相关疑难解决方法(0)

GZIPInputStream到String

首先,如果我的术语有点业余,我很抱歉,试着忍受我;)

我试图将HTTP响应的gzipped主体转换为明文.我已经采用了这个响应的字节数组并将其转换为ByteArrayInputStream.然后我将其转换为GZIPInputStream.我现在想要读取GZIPInputStream并将最终解压缩的HTTP响应主体存储为纯文本字符串.

此代码将最终解压缩的内容存储在OutputStream中,但我想将内容存储为String:

public static int sChunk = 8192;
ByteArrayInputStream bais = new ByteArrayInputStream(responseBytes);
GZIPInputStream gzis = new GZIPInputStream(bais);
byte[] buffer = new byte[sChunk];
int length;
while ((length = gzis.read(buffer, 0, sChunk)) != -1) {
        out.write(buffer, 0, length);
}
Run Code Online (Sandbox Code Playgroud)

java gzip http gzipinputstream

33
推荐指数
3
解决办法
6万
查看次数

如何存储可能包含二进制数据的Http响应?

正如我在上一个问题中描述的那样,我有一个编写代理服务器的任务.它现在部分工作,但我仍然有处理gzip信息的问题.我将HttpResponse存储在一个字符串中,看起来我不能用gzip压缩内容.但是,标题是我需要解析的文本,它们都来自同一个文本InputStream.我的问题是,为了正确处理二进制响应,我还需要做什么,同时仍然将头解析为字符串?

>>在查看代码之前,请参阅下面的编辑.

这是Response类实现:

public class Response {
    private String fullResponse = "";
    private BufferedReader reader;
    private boolean busy = true;
    private int responseCode;
    private CacheControl cacheControl;

    public Response(String input) {
        this(new ByteArrayInputStream(input.getBytes()));
    }

    public Response(InputStream input) {
        reader = new BufferedReader(new InputStreamReader(input));
        try {
            while (!reader.ready());//wait for initialization.

            String line;
            while ((line = reader.readLine()) != null) {
                fullResponse += "\r\n" + line;

                if (HttpPatterns.RESPONSE_CODE.matches(line)) {
                    responseCode = (Integer) HttpPatterns.RESPONSE_CODE.process(line);
                } else if …
Run Code Online (Sandbox Code Playgroud)

java encoding http httpresponse

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

http ×2

java ×2

encoding ×1

gzip ×1

gzipinputstream ×1

httpresponse ×1