获取网页源码,以及内网通过代理访问外网获取

<!--
	Author:Lovingshu
	Date:2012/09/25
	Remark:Get Source Code Of Web Pages Including Proxy Using
-->
public class WebTools {
	public static void main(String[] args) {
		String proxy = "proxy1.bj.petrochina";
		int port = 8080;
		String username = "name";
		String password = "pwd";
		initProxy(proxy,port,username,password);
		String url="http://www.google.com";
		/*System.out.println("content= "+WebTools.getHTML("http://www.baidu.com", "GB2312"));
		System.out.println("网页源码:"+WebTools.getHTML("http://localhost:9001/rdfcc", "UTF-8"));*/
		String[] res=WebTools.getSourceCode(url, "UTF-8");
		if(res[0].equals("0")){
			System.out.println("Geting Source Code Failed With:"+res[1]);
		}else{
			System.out.println("The Source Code Of "+url+" Is :\r\n"+res[1]);
		}
	}
	
	/**
	 * 初始化网络代理,如果内网需要代理才能访问外网的话,那么就需要调用该方法
	 * @param host 代理名称
	 * @param port 端口号
	 * @param username 用户名(如果有的话)
	 * @param password 密码(如果有的话)
	 */
	public static void initProxy(String host, int port, final String username,
			final String password) {
		Authenticator.setDefault(new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username,
						new String(password).toCharArray());
			}
		});
		System.setProperty("proxyType", "4");
		System.setProperty("proxyPort", Integer.toString(port));
		System.setProperty("proxyHost", host);
		System.setProperty("proxySet", "true");
	}
	
	/**
	 * 获取网页源码
	 * @param pageURL 地址
	 * @param encoding 网页编码
	 * @return 长度为2的字符串数组,第一个元素表示获取是否成功,第二个元素表示成功与否返回的信息
	 */
	public static String[] getSourceCode(String pageURL, String encoding) {
		StringBuilder pageHTML = new StringBuilder();
		try {
			URL url = new URL(pageURL);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setRequestProperty("User-Agent", "MSIE 7.0");
			BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), encoding));
			String line = null; 
			while ((line = br.readLine()) != null) {
				pageHTML.append(line);
				pageHTML.append("\r\n");
			}
			connection.disconnect();
		} catch (Exception e) {
			return new String[]{"0",e.getMessage()};
		}
		return new String[]{"1",pageHTML.toString()};
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值