Accept-Encoding: gzip,deflate + libcurl + rt5350

来源:互联网 发布:美团外卖商家mac版本 编辑:程序博客网 时间:2024/06/11 23:01

Accept-Encoding: gzip,deflate

IE和我们的代码使用的HTTP头里面都有这条内容,将这条内容删掉我得到了正确的结果。原因如下:

这条信息代表本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地对这个文件又进行了解压操作,所以文件内容是正确的。而在我们的代码里是将这些内容直接存入文件,不存在解压缩的过程,所以Size变小,内容也不一样。

细心的人可以发现在,IE在Down某一个比较大一点的东西时,Down的过程中显示的大小,比Down下来实际大小要小,这就是因为在接收的过程中接收的是压缩文件,而存到本地后的文件当然要大一些了哈~~

Accept-Encoding: gzip,deflate

为什么用浏览器可以正常浏览,而我用程序模仿就不行呢? 

答案在这里: 
引用
gzip是一种数据格式 
默认且目前仅使用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 应该是把源码包那边需要的东西拷贝到这里面




原创粉丝点击