小编Mil*_*tný的帖子

压缩和解压缩流

我发现这篇关于在JAVA中实现的简单代理服务器的文章:

http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

代码只是从客户端获取一些流,然后将其发送到服务器,然后从服务器获取流并将响应发送到客户端.我想要做的是在发送之前压缩这些流,并在收到之后对其进行解压缩.

我找到了班级,GZIPInputStream但我不确定如何使用它,我在互联网上找到的并没有帮助我.我要么不明白这么多,要么对我来说不是一个好的解决方案.

我的想法也是如此,但我不确定它是否正常:

final InputStream streamFromClient = client.getInputStream();
final OutputStream streamToClient = client.getOutputStream();
final InputStream streamFromServer = server.getInputStream();
final OutputStream streamToServer = server.getOutputStream();

InputStream gzipStream = new GZIPInputStream(streamFromClient );
try
{
        while ((bytesRead = gzipStream.read(request)) != -1)
       {
                    streamToServer.write(request, 0, bytesRead);
                    streamToServer.flush();
        }
}
catch (Exception e) {
System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)

现在发送到服务器的数据应该在发送之前进行压缩(但我不确定它是否是正确的解决方案).是吗?

现在假设服务器向我发送压缩数据.所以这个流:

final InputStream streamFromServer = server.getInputStream();
Run Code Online (Sandbox Code Playgroud)

被压缩了.

我怎样才能解压缩并写入

final OutputStream streamToClient = client.getOutputStream();
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,伙计们!

java compression gzip stream

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

发送连接标头设置为keep-alive

我正在尝试从我从浏览器发送的应用程序发送相同的信息.以下是Fiddler捕获的数据的一部分:

POST http://something/ HTTP/1.1
Host: something.com
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

我遇到了这个连接属性.如果我将属性keep-alive设置为true,在Fiddler中我看到:

代理连接:保持活跃

如果我尝试将连接属性设置为Keep-alive,则会收到以下错误:

使用此属性可能无法设置Keep-Alive和Close.

如何编写代码,以便在Fiddler中我可以看到:

连接:保持活力

我的完整代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://myUrl ");
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Accept = "*/*";
WebHeaderCollection headers = new WebHeaderCollection();
headers.Add("Accept-Encoding", "myEncoding");
headers.Add("Accept-Language", "myLang");
request.Headers = headers;
request.ContentType = "myContentType";
request.Referer = "myReferer";
request.UserAgent = "myUserAgent";
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "myData";
byte[] data = encoding.GetBytes(postData);
request.GetResponse().Close();
Run Code Online (Sandbox Code Playgroud)

c# keep-alive fiddler

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

标签 统计

c# ×1

compression ×1

fiddler ×1

gzip ×1

java ×1

keep-alive ×1

stream ×1