http://wezly.iteye.com/blog/671919
公司要访问外网需要使用代理,突然对Java如何使用代理产生了兴趣。
方法一:
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.Authenticator;
- import java.net.InetSocketAddress;
- import java.net.PasswordAuthentication;
- import java.net.Proxy;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class ProxyConnectionTest {
- public static void main(String[] args) throws IOException {
- // 设置代理 地址和密码
- Proxy proxy = new Proxy(Proxy.Type.HTTP,
- new InetSocketAddress(host, port));
- // 设置代理的密码验证
- Authenticator auth = new Authenticator() {
- private PasswordAuthentication pa =
- new PasswordAuthentication(username, password.toCharArray());
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return pa;
- }
- };
- Authenticator.setDefault(auth);
- // 打开连接
- System.out.println("connecting...");
- URL url = new URL("http://www.iteye.com/");
- URLConnection conn = url.openConnection(proxy);
- // 读取内容
- InputStreamReader isr = new InputStreamReader(conn.getInputStream());
- BufferedReader br = new BufferedReader(isr);
- String line = null;
- while ((line = br.readLine()) != null) {
- System.out.println(line);
- }
- System.out.println("done.");
- }
- }
然而,这里指定一些URL时总是出现这样那样的错误。比如就无法正常读取http://news.google.com,很多网站的域名后面必须加"/",如果"http://www.iteye.com/"才能取到内容,真是搞不通。
方法二:
- import java.util.Properties;
- import java.net.*;
- import java.io.*;
- public class TestHttpProxy {
- public static void main(String[] args) {
- String sUrl = "http://java.sun.com/index.html";
- Properties prop = System.getProperties();
- prop.put("http.proxyHost","192.168.1.111");
- prop.put("http.proxyPort","80");
- try{
- URL su = new URL(sUrl);
- System.out.println("url : " + su);
- URLConnection uc = su.openConnection();
- System.out.println("uc : " + uc);
- InputStream is = su.openStream();
- System.out.println("ic : " + is.read());
- is.close();
- System.out.println("ok");
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- }