既然已经上面几章学到了通过HttpUrlConnection和HttpClient发送网络请求,我们可以获取到网络的响应,其实我们上面的例子可以说是一个简单的爬虫啊,把一个Url的网页内容全部下载下来。
那今天我打算利用学到的这些知识做一件其他的事:刷新一个网页的访问量,就以刷新我的博客主页的访问量为例子吧。
一个网页内容,我们一直刷新访问,在一定时间内,访问量是不会增加,因为我们的ip始终是一个,所以要想刷新访问量,就需要准备一批ip去访问某个网页。要想获取不同的ip,网上有代理Ip的API接口,调用这个接口,会返回一批有效的ip,不过这些是收费的,所以我这里只能到网上随意搜几个IP测试一下。明白原理就好。
好了下面就开始写代码实现吧:
Ip信息类:

package com.blog.visit;public class IpInfo {private String  address;private String port;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPort() {return port;}public void setPort(String port) {this.port = port;}
}

Ip代理类:

package com.blog.visit;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;public class IpProxy {private IpInfo ip;//访问成功的 次数private int success=0;//网上随便搜的几个ipprivate String[] ips={"182.88.205.151:8123","110.73.6.189:8123","218.14.121.237:9000","121.232.147.110:9000","125.117.123.99:9000","117.90.3.181:9000","61.128.237.77:8998","123.7.31.205:808","119.163.121.122:8080","124.42.7.103:80","210.22.85.34:8080" };private String API_URL="";//代理api接口,这个得去网上买,我没买,所以没法测试//默认的几个IP用用吧private List<IpInfo> getDefalutIpProxy(){List<IpInfo> ipProxies=new ArrayList<IpInfo>();IpInfo ipInfo=new IpInfo();for(String ip:ips){String[] temp=ip.split(":");ipInfo.setAddress(temp[0]);ipInfo.setPort(temp[1]);ipProxies.add(ipInfo);}return ipProxies;}//代理IpApi接口取Ipprivate List<IpInfo>getIpProxyByAPI(){List<IpInfo> ipProxies=new ArrayList<IpInfo>();StringBuffer sb=new StringBuffer();HttpClient httpClient=new HttpClient();GetMethod getMethod=new GetMethod(API_URL);try {int code=httpClient.executeMethod(getMethod);if (code==200) {InputStream is = getMethod.getResponseBodyAsStream();BufferedReader dis=new BufferedReader(new InputStreamReader(is,"utf-8"));   String str ="";                           while((str =dis.readLine())!=null){sb.append(str);}   }} catch (Exception e) {e.printStackTrace();}//再这里解析这个接口返回的数据sb,可能是xml,可能是json,把这个数据封装到ipProxies再返回/**///这里省略解析的过程,因为没有实际买代理的api接口/**/return ipProxies;}public void addVisit(String blogUrl){//采用默认的自己找的ip去访问吧,没有买api接口List<IpInfo>ipProxies=this.getDefalutIpProxy();for( IpInfo ip : ipProxies) {System.setProperty("http.maxRedirects", "50");System.getProperties().setProperty("proxySet", "true");System.getProperties().setProperty("http.proxyHost", ip.getAddress());System.getProperties().setProperty("http.proxyPort", ip.getPort());GetMethod getMethod = new GetMethod(blogUrl);HttpClient httpClient=new HttpClient();httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);  getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0");try {int stateCode=httpClient.executeMethod(getMethod);if (stateCode==200) {synchronized (this) {success++;System.out.println("访问成功几次:"+success);}       }else {System.out.println("访问不成功");}   } catch (HttpException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}public IpInfo getIp() {return ip;}public void setIp(IpInfo ip) {this.ip = ip;}}

主函数:

package com.blog.visit;import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class Main {public static void main(String[] args) {    final String blogUrl="http://blog.csdn.net/u010248330/article/details/68925613";final IpProxy ipProxies=new IpProxy();ExecutorService threadPool=Executors.newFixedThreadPool(1);for (int i = 0; i <1; i++) {threadPool.execute(new Runnable() {@Overridepublic void run() {try {ipProxies.addVisit(blogUrl);} catch (Exception e) {e.printStackTrace();}}});}}
}

实验结果:
原访问量:

执行代码看看:

说明访问成功了11次,所以访问量应该增加11次,1765+11=1776次。

我们在访问看看访问量多少了:

说明是可行的。。

如果我们买一个代理Ip的api接口,拿到更多的数据,开启多个线程去访问,完全是可以刷出很多的访问量。

此文纯属学习娱乐!!!~~~~

HttpUrlConnection与HttpClient的认识(六) -实际应用之刷网络流量相关推荐

  1. HttpURLConnection与HttpClient浅析---转

    HttpURLConnection与HttpClient浅析 1. GET请求与POST请求 HTTP协议是现在Internet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HT ...

  2. HttpURLConnection及HttpClient选择(转)

    介绍Android中Http请求方式的选择.区别及几个常用框架对API的选择 1. 两种请求方式对比 Android Http请求API主要分两种: 第一种是Java的HttpURLConnectio ...

  3. HttpURLConnection与 HttpClient 区别/性能测试对比

    ttpClient是个开源框架,封装了访问http的请求头,参数,内容体,响应等等, HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便 HttpClient实际 ...

  4. Android之访问网络,使用HttpURLConnection还是HttpClient?

    <span style="font-family: Arial; font-size: 14px; background-color: rgb(255, 255, 255);" ...

  5. (转)HttpURLConnection与 HttpClient 区别

    转自: HttpURLConnection与 HttpClient 区别/性能测试对比 - 尚码园HttpURLConnection与HttpClient随笔 目前在工做中遇到的须要各类对接接口的工做 ...

  6. android系统提供了url通信,Android两种HTTP通信,HttpURLConnection和HttpClient

    Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高. 不过HttpURL ...

  7. Android訪问网络,使用HttpURLConnection还是HttpClient?

    原文地址:http://android-developers.blogspot.com/2011/09/androids-http-clients.html 大多数的Android应用程序都会使用HT ...

  8. HttpURLConnection与HttpClient提交FORM表单参数请求工具类

    来吧,小宝贝!!!!!!一个小白在项目过程中遇到的问题,给你们分享一下哈!!!!! 先看下我们请求的方式与请求体: 不难看出哈,请求的参数体并没有什么难点,那我为什么还要做一下总结呢?真的可能因为我太 ...

  9. (六)elasticsearch 集群 网络超时解决方案 --- Elasticsearch 集群搭建

    上一篇: (五)elasticsearch 集群扩展 --- Elasticsearch 集群搭建 因为网络原因,可能会有节点被踢出集群,如果网络恢复,节点会再次加入集群,但是这中间的过程是比较耗费性 ...

最新文章

  1. 2022-2028年中国露天采矿行业调查与投资前景评估报告
  2. HttpSession常见问题
  3. 2022年跨境电商新玩法:Tik Tok私域流量沉淀+电商平台流量承接
  4. 冒死揭秘安利_赵丽颖新剧开播备受争议?冒死安利
  5. R语言ggplot2绘图——柱状图
  6. linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...
  7. DICOM开发工具总结
  8. ethercat如何编程 台达50mc_台达可编程控制器DVP-50MC系列产品介绍
  9. 程序员写简历时不要犯这种低级的错误!
  10. excel打开密码忘记了_密码箱忘记密码如何快速打开
  11. Oracle数据库Clob类型Blob类型与String互转
  12. QT自定义控件--时钟
  13. ODOO实现环境检测机构检测业务管理系统
  14. 诺基亚公布准5G技术进展;Facebook要推智能电视应用 | IoT黑板报
  15. Linux Neptune界面,基于Debian Linux 的 Neptune 5.4发布啦
  16. java画二维坐标_在图形界面中绘制二维的坐标系统
  17. 【读过的书】《查令十字街84号》
  18. 山东省2022 年专升本 计算机大纲(信息安全)
  19. 【分解质因数】合数的质因数分解
  20. 批量下载百度贴吧帖子图片

热门文章

  1. 耿明雨出席2021深圳国际珠宝展览会
  2. CAD二次开发之LISP读取excel数据
  3. 云端身份证识别OCr
  4. 【BLE】蓝牙抓包器 Ellisys 使用说明
  5. 大四最后一个学期去公司实习前2天的一点感悟
  6. 比尔盖茨:如果再上大学,我会选这三个专业!
  7. 国投瑞银创新基金对基金市场有何影响
  8. 初入社会要避免入的坑-租房篇
  9. 人类会被人工智能取代吗
  10. android7.0计时器代码,iCountTimer Pro(锻炼计时器)