package xian;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
public class RefreshBlog {
private static volatile int number = 0;
private static final String url ="http://hackerxian.blog.51cto.com/9240575/1615425";
//private static final String url ="http://blog.csdn.net/jiazhipeng12/article/details/43731675";
//简单的用一个线程池
private static ExecutorService es = Executors.newFixedThreadPool(30);
public static void main( String[] args ){
//简单的用一个线程池
// ExecutorService es = Executors.newFixedThreadPool(30);
//线程的个数应该根据自家的网络来定.我家是10M网所以20个基本上就是上限了.
for(int i=0;i<1;i++){
Runnable r = new Runnable() {
public void run() {
refreshBlog();
}
};
es.submit(r);
//refreshBlog();
}
}
/**
* refreshBlog 这个方法是相应请求
* @author heinz_ho
* @return void
*/
public static void refreshBlog(){
HttpClient httpClient=new HttpClient();
GetMethod getMethod = new GetMethod(url);
//csdn
//getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 LBBROWSER");
//51cto
getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 LBBROWSER");
//其实这里我也不太懂.我只是知道cookie的生成策略,但是因为 csdn会判断力过来的cookie是啥.必须加. BROWSER_COMPATIBILITY
getMethod.getParams().setCookiePolicy(org.apache.commons.httpclient.cookie.CookiePolicy.BROWSER_COMPATIBILITY);
while(true) {
try {
//这句话会造成阻塞因为想网络发起请求.
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.out.print("失败:" + getMethod.getStatusLine());
Thread thread = Thread.currentThread();
thread.sleep(1500);//暂停1.5秒后程序继续执行
//return;
}
System.out.println("你已经刷新了:"+number++);
} catch (Exception e) {
System.out.print("请检查网络地址!");
} finally {
getMethod.releaseConnection();
}
}
}
/* public static void go(GetMethod getMethod){
HttpClient httpClient=new HttpClient();
//偷懒就用了一个死循环
while(true) {
try {
//这句话会造成阻塞因为想网络发起请求.
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.out.print("失败:" + getMethod.getStatusLine());
Thread thread = Thread.currentThread();
thread.sleep(1500);//暂停1.5秒后程序继续执行
}
System.out.println("你已经刷新了:"+number++);
} catch (Exception e) {
System.out.print("请检查网络地址!");
} finally {
getMethod.releaseConnection();
}
}
}*/
}
需要的几个jar包:http://download.csdn.net/detail/jiazhipeng12/8458661