`
wezly
  • 浏览: 485338 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java中通过代理连接至指定的URL

阅读更多

 公司要访问外网需要使用代理,突然对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(); 

  } 

 } 

} 

 

 

分享到:
评论
1 楼 syx278250658 2011-10-23  
good job!

相关推荐

    使用JAVA中的动态代理实现数据库连接池

    Java的动态代理机制允许我们在运行时创建一个实现了指定接口的对象,这个对象的行为可以在`InvocationHandler`中自定义。当调用代理对象的任何方法时,都会转到`InvocationHandler`的`invoke`方法。这一特性使得我们...

    java动态代理实现数据库连接池

    通过上述方法,我们成功地实现了一个基于Java动态代理的数据库连接池。这种方法不仅减少了耦合度,提高了用户体验,还确保了连接的有效管理和回收。这种实现方式灵活且易于扩展,对于希望深入理解Java动态代理机制...

    使用JAVA中态代理实现数据库连接池.doc

    通过使用 JAVA 中的动态代理机制,我们可以实现一个高效、灵活的数据库连接池,解决了现有的连接池实现方法增加耦合度的问题,并且提供了一个灵活的解决方案,可以满足不同的应用需求。 在本文中,我们讨论了使用 ...

    通过url网址下载图片,可以选择有代理下载,也可以选择无代理下载

    在Java中,我们可以使用`java.net.URL`类来创建一个表示URL的对象,然后使用`java.net.URLConnection`打开与该URL的连接。一旦连接建立,我们可以读取输入流并将其写入本地文件以保存图片。以下是一个简单的示例: ...

    Java编写的HTTP代理

    在提供的文件列表中,`runrun.bat`和`run.bat`很可能是启动代理服务器的批处理脚本,它们可能包含Java虚拟机(JVM)的命令行参数,例如指定Java应用程序的主类和jar文件的位置。而`ieproxy.jar`则是实际的Java可执行...

    tt.rar_ java_Java 代理服务器_java 线程_代理服务器_服务器

    Java代理服务器是一种网络通信工具,它允许客户端通过它与目标服务器进行通信,以此来隐藏原始客户端的IP地址或者实现特定的网络访问策略。在Java中实现代理服务器涉及到多个关键概念和技术,包括网络编程、多线程...

    Java采集最新动态代理IP

    通过阅读和学习这个项目的源代码,你可以更深入地理解如何在Java中结合Jsoup实现动态IP代理。 总的来说,Java爬虫结合Jsoup实现动态IP代理是一个涉及网络通信、HTML解析、数据处理和代理机制等多个方面的综合性问题...

    Java实现HTTP连接与浏览,Java源码下载

    在Java编程语言中,HTTP(超文本传输协议)连接与浏览是网络编程的重要组成部分,它允许应用程序通过HTTP协议与Web服务器进行通信。本教程将深入探讨如何使用Java实现这一功能,并提供相关的源码下载,帮助开发者更...

    代理服务器实现-java(源码)

    总的来说,这个Java代理服务器示例提供了一个基础的代理服务实现,有助于理解网络编程、HTTP协议以及Java中的多线程和网络通信机制。通过扩展这个基础代码,可以实现更复杂的代理功能,如缓存、访问控制、加密等。

    通过JAVA语言实现使用URL访问网络资源.pdf

    通过Java.net包中的URL类,开发者可以创建并操作URL对象,从而轻松实现对网络资源的访问和操作。 1. **URL对象的创建** - `URL`类提供了多种构造方法来创建URL对象,以适应不同的URL格式。例如,可以通过字符串...

    Java代理服务器的实现

    通过以上步骤,这个简单的Java代理服务器就能够实现基本的功能。在实际部署中,可能还需要添加更多高级功能,如支持HTTPS、缓存机制、错误处理、安全验证等。此外,为了提高性能和可维护性,可以考虑使用更现代的...

    JAVA代理服务器

    Java代理服务器是一种网络通信工具,它允许客户端(如浏览器)通过代理来访问其他网络资源,提供了额外的安全性、隐私保护以及可能的性能优化。在Java中实现代理服务器,主要是通过Socket编程来完成的。下面我们将...

    java设置http代理

    // 创建 URL 连接并设置代理 URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); // 发送请求 connection.setRequestMethod("GET"); ...

    Java实现数据库连接池..pdf

    4. **用户使用代理连接**:用户可以像使用普通`Connection`对象一样使用代理连接,但实际的`close()`操作将被代理处理。 5. **释放连接**:当用户调用`close()`时,代理对象会将其返回给连接池,而不是真正关闭连接...

    java开源包4

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...

    Java Networking and Proxies Code

    通过上述步骤,开发者可以构建一个系统,持续监控指定URL是否通过代理,并获取到关于代理的详细信息。在实际项目中,这样的功能可能用于网络诊断、日志记录、监控等场景。理解并熟练运用Java的网络和代理特性,对于...

    Domino_java代理实现FTP上传下载

    ### Domino Java 代理实现 FTP 上传下载 #### 知识点概述 在当前的企业级应用环境中,文件传输协议(FTP)依然是一种常见的数据交换方式。本文档主要介绍如何使用 Java 实现与 FTP 服务器的交互功能,具体包括上传...

    java http方式抓取网页信息 JAVAIO

    这个例子中,`HttpURLConnection`被用来建立到指定URL的连接,然后设置请求方法为GET。`getInputStream()`方法用于读取响应内容,而`BufferedReader`则用于逐行读取输入流。最后,内容被写入名为"output.txt"的本地...

    java程序如何穿透带有密码验证的代理.doc

    在`main`方法中,我们创建了一个`URL`对象,并通过`HttpURLConnection`打开到该URL的连接。由于之前设置了认证器和代理,所以连接能够成功通过认证并获取代理服务器后面的资源。 这段代码适用于那些需要通过有密码...

    通过java获取土豆视频

    在本示例中,使用了`Jsoup.connect()`方法连接指定的URL,并通过`.post()`方法发送POST请求。此外,还可以设置代理、超时时间等参数。 **代码示例**: ```java Document doc = Jsoup.connect(url) .data("query", ...

Global site tag (gtag.js) - Google Analytics