package com.deng.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Small Case
* 获取网页源码工具类
*/
public class GetHtmlUtils {
/**
* 声明线程池
*/
public static final ExecutorService executorService = Executors.newFixedThreadPool(3);
/**
* @param inUrl 地址
* @param charSetName 编码规范Encoding
* @param setRequestMethod 请求方法get,post
* @param outResult 回调接口
* @throws Exception
*/
public static void GetHtmlText(String inUrl,final String charSetName,
String setRequestMethod,
final OutResult outResult) throws Exception{
final StringBuffer sb = new StringBuffer();
URL url = new URL(inUrl);
//建立到目的地的联接
final HttpURLConnection con = (HttpURLConnection) url.openConnection();
//请求方法
con.setRequestMethod(setRequestMethod.toUpperCase());
//提交线程池,执行线程池
executorService.submit(new Runnable() {
@Override
public void run() {
//通过BufferedReader一行行的读取数据,如果你需要的是全部返回结果,可以修改一下这里
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(
con.getInputStream(), charSetName));
} catch (UnsupportedEncodingException e) {
System.err.println("编码的时候出事故了:\n"+e.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
String s = "";
try {
while ((s=br.readLine()) != null) {
sb.append(s);
}
//将返回值回调到CallBackResult的参数中
outResult.CallBackResult(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
//回调接口
public interface OutResult{
public void CallBackResult(String result);
}
}
代码看似复杂,当你搞懂时也就不是什么秘密啦,下面我们来调用这个工具类
package com.deng.mian;
import com.deng.utils.GetHtmlUtils;
import com.deng.utils.GetHtmlUtils.OutResult;
public class Mian {
/**
* @param args
*/
public static void main(String[] args) {
try {
GetHtmlUtils.GetHtmlText("http://www.baidu.com/","UTF-8","get", new OutResult() {
@Override
public void CallBackResult(String result) {
//输出数据
System.out.println(result);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
剩下的就是结果的展示了,结果就不展示了,亲测才知道