博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DefaultHttpClient 使用GZIPInputStream解压缩
阅读量:7044 次
发布时间:2019-06-28

本文共 2387 字,大约阅读时间需要 7 分钟。

hot3.png

DefaultHttpClient 使用GZIPInputStream解压缩 当浏览器访问网站时,有可能浏览器返回的消息头中带有
Content-Encoding:gzip,表明服务器返回的消息经过gzip压缩,这么做是为了节省流量,浏览器拿到gzip压缩后的http包,对其进行解压缩,再渲染出来。在使用apache提供的
DefaultHttpClient操作http请求时,可以使用
GZIPInputStream对gzip压缩过的数据包进行解压缩。android sdk进行网络编程时,也可以使用这种方法。简单代码如下:
DefaultHttpClient httpClient =  new DefaultHttpClient();    //dns探测源ip    String[] dnsIps = {"jsdx", "yndx", "bjdx", "bjlt", "sclt", "shlt", "gg"};    for(String ip : dnsIps)    {        HttpPost post = new HttpPost("http://webscan.360.cn/tools/dnsInfo.php");        post.addHeader("Referer", "http://webscan.360.cn/tools/dnslookup");        post.addHeader("X-Requested-With", "XMLHttpRequest");        post.addHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");        post.addHeader("Accept", "*/*");        post.addHeader("Accept-Encoding", "gzip, deflate");        post.addHeader("Accept-Language", "zh-cn,en-us;q=0.7,en;q=0.3");        post.addHeader("Pragma", "no-cache");        post.addHeader("Cache-Control", "no-cache");        List
params = new ArrayList
(); params.add(new BasicNameValuePair("dns_ip", ip)); params.add(new BasicNameValuePair("domain_name", domain)); params.add(new BasicNameValuePair("dns_type", "A")); UrlEncodedFormEntity formEntity = null; HttpResponse response = null; String responseHtml = null; try { formEntity = new UrlEncodedFormEntity(params, "utf-8"); post.setEntity(formEntity); response = httpClient.execute(post); InputStream is= response.getEntity().getContent(); is= new GZIPInputStream(is); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null; StringBuffer sb = new StringBuffer(); while((line = br.readLine())!=null) { sb.append(line); } responseHtml = sb.toString(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }

转载于:https://my.oschina.net/u/147181/blog/164968

你可能感兴趣的文章
手机上的搜索引擎-Windows Live Search Mobile 发布!
查看>>
五元组和防火墙
查看>>
Mac下添加java环境变量
查看>>
CollectionUtils工具类的常用方法
查看>>
最新勒索软件病毒防范方法及措施
查看>>
cJSON精度丢失问题
查看>>
从配置文件的格式扯到GUI和CLI
查看>>
U盘安装系统提示Ghost has detected corruption in the image解决方法
查看>>
通过Powershell重新挂接父VHD磁盘的方法
查看>>
date命令[原创]
查看>>
Rsync完全配置
查看>>
系统监控工具----Inotify-Tools
查看>>
由浅入深CIL系列:2.CIL的基本构成+CIL操作码速记表+CIL操作码大全速查
查看>>
Net设计模式实例之组合模式(Composite Pattern)(2)
查看>>
duplicate symbol _GAD_MD5
查看>>
mysql编译报错: No curses/termcap library found
查看>>
Shell脚本之sed篇
查看>>
学习 Kubernetes 的 Why 和 How - 每天5分钟玩转 Docker 容器技术
查看>>
维护人员应该掌握的代码
查看>>
编写脚本时以年月日为目录时值得注意的地方
查看>>