求助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数据解压位正常数据,希望各位大侠帮我解决。
...全文
620 9 打赏 收藏 转发到动态 举报
写回复
用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网上有下载的
代码下载地址: https://pan.quark.cn/s/e828ad01234a JLink与JTAG是两种在嵌入式系统调试领域得到普遍应用的接口技术,它们为开发者提供了对微控制器进行编程、调试以及故障诊断的能力。本文旨在对这两种接口的功能机制、定义规范以及实际应用中的异同点进行细致的剖析。JTAG(联合测试行动组)是一项国际性的标准,其原始设计目的是为了电路板级别的检测,但当前更多地被用于程序的下载和调试过程。该接口通过TMS(测试模式选择)、TCK(测试时钟)、TDI(测试数据输入)、TDO(测试数据输出)和TRST(测试复位)等信号线来完成数据的输入与输出任务。其中,TCK负责提供时钟脉冲,TMS用于控制测试逻辑的状态,TDI将数据传送至设备内部,TDO用于接收设备反馈的数据,而TRST则作为一个可选的外部复位信号。JLink是由Segger公司设计并推广的一种流行的JTAG/SWD(SWD:串行线调试)调试设备。与JTAG相比,SWD接口的设计更为精简,仅需两根线缆(SWDIO和SWDCLK)即可完成数据传输与时钟同步的功能,从而有效节约了硬件资源,对于资源受限的嵌入式系统尤为适用。JLink能够兼容多种微控制器和操作系统,并提供了高速的调试速度以及包括仿真、内存编程、在线电压检测在内的一系列丰富功能。在20引脚的JTAG接口规格中,除了标准的JTAG信号外,还可能包含电源供应、地线连接以及用户可定义的引脚。此类接口常用于传统的JTAG调试场景,适合需要大量信号线的应用环境。相反,14引脚的接口规格可能是在20引脚的基础上进行了简化处理,去除了部分非关键的信号线,以便在空间布局紧凑的环境中部署。在具体操作层面,JLink能够通过USB接口与个人计算...
源码直接下载地址: https://pan.quark.cn/s/fd3758fd4dad Greenplum是一个为大数据分析而构建的开源MPP(大规模并行处理)数据库系统。该系统具备处理PB级数据的能力,并且提供高效的在线分析处理(OLAP)功能。本部分将深入探讨Greenplum的高可用性、安全防护措施以及备份方法。Greenplum的高可用性设计体现在其包含了多层次的容错体系,涵盖了硬件和软件两个层面的容错需求。在硬件配置上,Greenplum建议部署两台管理节点,其中一台作为主节点,另一台作为备用(Standby)节点,这两者之间能够实现自动化的数据同步。一旦主节点发生故障,系统可以自动切换至备用节点,从而保障数据库的持续运行。在数据节点层面,Greenplum运用镜像技术,将primary实例的数据自动复制到其他数据节点的mirror实例中。若primary实例出现故障,系统可自动识别并启动相应的mirror实例,以此确保数据的完整性以及服务的可用性。除此之外,为了降低硬件故障对系统的影响,Greenplum数据库通常采用双台网络交换机的部署方案。在常规操作中,两台交换机协同工作,达成负载均衡的目的;当一台交换机出现故障时,另一台交换机能够提供备份支持。对于服务器硬件,Greenplum数据库要求实施冗余保护措施,涉及风扇(Fan)和电源供应单元(PSU)等组件,并且采用Raid5磁盘阵列技术来保护存储数据。当需要更换新的硬盘时,Raid5能够自动完成数据的重建。在系统表和视图的管理上,Greenplum维护了多个关键系统表和视图,例如gp_segment_configuration用于记录包括master和standby在内的所有节点信息,当节点状态显...

1,488

社区成员

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

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