请高人指点关于MemoryStream和gzip的问题

qugui 2007-06-07 08:20:42
本人自已做了一个Http GET的类,该类返回一个MemoryStream流,但我的测试服务器没有开GZIP时,没有任何问题,但当我开了GZIP后,用ICSharpCode.SharpZipLib.GZip提供的方法对其流解压动解不出东西,而对HttpWebResponse返回的流解压正常,我的MemoryStream流和HttpWebResponse返回的流Stream唯一区别就在我的流包括了Http返回的头文件,而HttpWebResponse却不包括。
请高人指点我该如何分开返回信息中的头文件和正文?
...全文
347 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qugui 2007-06-07
  • 打赏
  • 举报
回复
报文我也去掉了,但还是解不出来
kimmking 2007-06-07
  • 打赏
  • 举报
回复
下载一个Tcpmon.jar之类的工具抓下双方的http报文看看。
kimmking 2007-06-07
  • 打赏
  • 举报
回复
要分析和去掉http响应的报文的头部
impeller 2007-06-07
  • 打赏
  • 举报
回复
两钻的都出来了
qugui 2007-06-07
  • 打赏
  • 举报
回复
这是我写的类。
孟子大哥,你给的网页我看了,它是对HttpWebRequest的方法,那个我知道,我现在不知道要怎么写才能实现和HttpWebRequest的一样的返回stream流。
我用查找\r\n\r\n再开始读数据到MemoryStream 流,但是在后面还是解不出来.
private MemoryStream HttpRequest(string Url)
{
MemoryStream ms2 = new MemoryStream();
string res="";
string ip=null;
IPHostEntry heserver = Dns.Resolve(textBox1.Text.Trim());
foreach (IPAddress curAdd in heserver.AddressList)
{
ip= curAdd.ToString();
}
try
{

// label1.Text=i.ToString();
MyServer1=new IPEndPoint(IPAddress.Parse(ip),80);
sock1 =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sock1.Connect(MyServer1);
string str="GET / HTTP/1.1\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\nAccept-Language: zh-cn\r\nUA-CPU: x86\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)\r\nConnection: Keep-Alive\r\nHost:"+Url+"\r\n\r\n";
byte [] bt =Encoding.UTF8.GetBytes(str);
sock1.Send(bt,0,bt.Length,SocketFlags.None);

byte[] RecvBytes = new byte[1];
int bytes;
while (true)
{

bytes = sock1.Receive(RecvBytes, SocketFlags.None);


if(res.IndexOf("\r\n\r\n")>=0)
{
ms2.Write(RecvBytes, 0, bytes);
}
res += Encoding.UTF8.GetString(RecvBytes,0,bytes);
if(sock1.Available<=0) break;
}
sock1.Close();
ms2.Seek(0, SeekOrigin.Begin);
return ms2;


}
catch(Exception ex)
{
textBox2.Text+=ex.Message+"\r\n";
return ms2;
}
}
lsq667 2007-06-07
  • 打赏
  • 举报
回复
沙发啊~~
先占了再说
帮楼主顶下先了
孟子E章 2007-06-07
  • 打赏
  • 举报
回复
http://blog.csdn.net/qqwwee_com/archive/2006/04/14/664049.aspx
是VB.net的

VB.net 转C#
http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx

孟子E章 2007-06-07
  • 打赏
  • 举报
回复
.NET Framework 1.1可以参考
http://www.codeproject.com/aspnet/CompressibleHTTP.asp

.net 2.0可参考

http://blog.csdn.net/qqwwee_com/archive/2006/04/14/664049.aspx

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧