求助VB解压Gzip代码

longzhiziln 2010-08-10 05:59:35
Private Sub Winsock1_Connect()
Dim StrCommand As String
StrCommand = StrCommand & "GET /s?bs=%B7%C7%B3%CF%CE%F0%C8%C5&f=8&wd=%B7%C7%B3%CF%CE%F0%

C8%C5 HTTP/1.1" & vbCrLf
StrCommand = StrCommand & "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

application/x-shockwave-flash, application/msword, application/vnd.ms-excel,

application/vnd.ms-powerpoint, application/x-silverlight, application/QVOD, application/QVOD,

*/*" & vbCrLf
StrCommand = StrCommand & "Referer: http://www.baidu.com/" & vbCrLf
StrCommand = StrCommand & "Accept-Language: zh-cn" & vbCrLf
StrCommand = StrCommand & "Accept-Encoding: gzip, deflate" & vbCrLf
StrCommand = StrCommand & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;

SV1; QQDownload 1.7; .NET CLR 2.0.50727; CIBA; Alexa Toolbar)" & vbCrLf
StrCommand = StrCommand & "Host: www.baidu.com" & vbCrLf
StrCommand = StrCommand & "Connection: Keep-Alive" & vbCrLf
StrCommand = StrCommand & "Cookie: BAIDUID=E3E01D2A45C64A7EEED5379889E976BF:FG=1" &

vbCrLf & vbCrLf
Winsock1.SendData StrCommand
End Sub



WinSock接收来的Gzip数据解压位正常数据,希望各位大侠帮我解决。
...全文
589 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
longzhiziln 2010-08-25
  • 打赏
  • 举报
回复
谢谢,bakw,我测试下看是否可用
笨狗先飞 2010-08-18
  • 打赏
  • 举报
回复
这个是我用过的解码程序,可以用,但是有时候会解出些乱码,要用到zlib.dll版本是1.1.2.0

Public Declare Function uncompress Lib "zlib.dll" (dest As Any, destLen As Any, src As Any, ByVal srcLen As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)

Public Function DecompressData(TheData() As Byte, OrigSize As Long) As Long
Dim BufferSize As Long, TempBuffer() As Byte, Result As Long
BufferSize = OrigSize
BufferSize = BufferSize + (BufferSize * 0.01) + 12
ReDim TempBuffer(BufferSize)
Result = uncompress(TempBuffer(0), BufferSize, TheData(0), UBound(TheData) + 1)
ReDim Preserve TheData(BufferSize - 1)
CopyMemory TheData(0), TempBuffer(0), BufferSize
Erase TempBuffer
DecompressData = Result
End Function
  • 打赏
  • 举报
回复
顶起……
我的一个也是由于没有解决gzip在vb下解压的问题而放弃了Accept-Encoding: gzip这句,虽然本来就数据不大。但是总给人怪怪的。

期待解决……
Gordon_Freeman 2010-08-18
  • 打赏
  • 举报
回复
楼主干吗搞这么复杂,用winsock处理
用XMLHTTP不是更好吗?直接使用responseText

而且,你winsock可以不发送gzip的请求,这样服务器返回的信息就不用解压缩了


StrCommand = StrCommand & "Referer: http://www.baidu.com/" & vbCrLf
StrCommand = StrCommand & "Accept-Language: zh-cn" & vbCrLf
StrCommand = StrCommand & "Accept-Encoding: gzip, deflate" & vbCrLf
把这段代码删掉
StrCommand = StrCommand & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;

SV1; QQDownload 1.7; .NET CLR 2.0.50727; CIBA; Alexa Toolbar)" & vbCrLf

kmzs 2010-08-12
  • 打赏
  • 举报
回复
Zlib当然没有VB源码,可以找编译为DLL的,尝试以API方式访问其中的解码函数解码。记得有人做过一个VB自定义控件能调用Zlib的。
  • 打赏
  • 举报
回复
可以不用gzip传输的,服务器回给你的不是gzip数据
把这句去掉试试
StrCommand = StrCommand & "Accept-Encoding: gzip, deflate" & vbCrLf
longzhiziln 2010-08-11
  • 打赏
  • 举报
回复
去掉StrCommand = StrCommand & "Accept-Encoding: gzip, deflate" & vbCrLf
数据量大的时候,软件会很慢,

因为默写特殊的功能限制,所以不得不用Winsock

Zlib中有解压数据流的VB的源码吗
笨狗先飞 2010-08-10
  • 打赏
  • 举报
回复
用winsock处理http协议不是很好,可以试试winhttp,解码用zlib.dll网上有下载的

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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