Accept-Encoding: gzip,deflate
IE和我们的代码使用的HTTP头里面都有这条内容,将这条内容删掉我得到了正确的结果。原因如下:
这条信息代表本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地对这个文件又进行了解压操作,所以文件内容是正确的。而在我们的代码里是将这些内容直接存入文件,不存在解压缩的过程,所以Size变小,内容也不一样。
细心的人可以发现在,IE在Down某一个比较大一点的东西时,Down的过程中显示的大小,比Down下来实际大小要小,这就是因为在接收的过程中接收的是压缩文件,而存到本地后的文件当然要大一些了哈~~
Accept-Encoding: gzip,deflate
为什么用浏览器可以正常浏览,而我用程序模仿就不行呢?答案在这里:
默认且目前仅使用deflate算法压缩data部分,此法用于压缩传输
如果服务器支持Gzip,那么客户端必须要IE5.5以上!
数据返回给客户端时候已经被gzip压缩了,只是IE可以自动解压,而你的程序里面没有自动解压而已……
同样道理,你可以弄个解压算法来把乱码的数据解压,即可得到正常的HTML返回结果。
libcurl 支持 openssl 交叉编译 mips rt5350
历经半个月终于把libcurl库编译出来,参考网上很多博客,最终把自己要的库编译出来。
首先说明一下,我要这个库的目的。我在RT5350上跑openWRT需要向服务器提交数据,用http协议,且需要ssl加密。经过网上查找只有libcurl合适,于是我用mipsel-openwrt-linux-gcc开始交叉编译libcurl,
开始的时候一直在CSDN下载 libcurl的源代码包,版本不一样里面Makefile也会有差别,一直报错,具体错误我没记录下来可惜,后来我在github找一份比较新的版本curl-7.51.0.tar.gz 最好还是去官网下载 我刚开始可能就是源码包不对 。经过一星期的折腾终于把这个编译好了,但是我要支持https所以还需要加openssl,参考博客, 但是别人写的博客说的也不一定适合自己用,所以我才记录下这篇博客
一、用mipsel-openwrt-linux-gcc 编译libcurl
如果不需要支持ssl的话配置的时候要把 ssl 关了
1.解压安装包 tar -xvf curl-7.51.0.tar.gz
2.进入目录 cd curl-7.51.0
3.配置 ./configure --prefix=/opt/libcurl-lib CC=mipsel-openwrt-linux-gcc --host=mipsel-linux -with-ssl=/opt/openssl-lib/ --with-zlib=PATH(加上这句话,就可以使得libcurl支持解压)
--prefix后面跟的是你到时候库要放的地方,就像Linux装软件一样装在哪里,由于我不是要在虚拟机运行只要这个库,所以就选/opt/libcurl-lib这个目录,到时候下面一步就知道了
CC=这个是配置交叉编译链
--host=mipsel-linux这个网上说是目标机,也就是这个库到时候编译出来的程序要运行的那设备,我也不懂
-with-ssl=/opt/openssl-lib/ 这个就是打开ssl, 有的版本默认是打开 有的是默认关闭,自己去看吧哈哈, =/opt/openssl-lib/这个就是你的依赖库放在哪里,我就放这了,待会儿会讲为啥
4.编译 make -j4 -j4是为了编译的时候更快 好像是4核吧
5.安装(生成库) make install 经过这一步就会把生成的库等等放在配置的时候这个里面--prefix=/opt/libcurl-lib 应该是把源码包那边需要的东西拷贝到这里面