package cn.arthurs.web;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.util.Properties;
import org.apache.log4j.Logger;
public class WebUnit {
private static final Logger log = Logger.getLogger( WebUnit.class );
/**
* 返回一个网站的源代码,需要传入一个网站的网址
* @param webUrl
* @return
*/
public static String getWebContent(String webUrl){
URL url;
HttpURLConnection conn;
InputStream stream;
StringBuffer text = new StringBuffer();
String temp="";
try {
url = new URL(webUrl);
//如果需要代理服务器
if(false){
Properties prop = System.getProperties();
// 设置http访问要使用的代理服务器的地址
prop.setProperty("http.proxyHost", "bmcdc.bmsa.com");
// 设置http访问要使用的代理服务器的端口
prop.setProperty("http.proxyPort", "1865");
// 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
prop.setProperty("http.nonProxyHosts", "localhost|10.4.*.*");
// 设置安全访问使用的代理服务器地址与端口 // 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
// prop.setProperty("https.proxyHost", "bmccisa-dc02.bmccisa.com");
// prop.setProperty("https.proxyPort", "443");
// 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
// prop.setProperty("ftp.proxyHost", "192.168.0.254");
// prop.setProperty("ftp.proxyPort", "2121");
// prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*"); // socks代理服务器的地址与端口
// prop.setProperty("socksProxyHost", "192.168.0.254");
// prop.setProperty("socksProxyPort", "8000");
// 设置登陆到代理服务器的用户名和密码
Authenticator.setDefault(new MyAuthenticator("ebgqy@bca.com", "f3mj"));
}
conn = (HttpURLConnection) url.openConnection();
conn.connect();
stream = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
while((temp = reader.readLine()) != null){
text.append(temp+"\n");
}
} catch (MalformedURLException e) {
log.error("输入"+webUrl+"有误!!!");
} catch (IOException e) {
log.error(e);
}
return text.toString();
}
public static void main(String[] args){
// System.out.println(WebUnit.getWebContent("http://www.baidu.com"));
}
static class MyAuthenticator extends Authenticator {
private String user = "";
private String password = "";
public MyAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password.toCharArray());
}
}
}
分享到:
相关推荐
在这个实例中,我们将深入探讨代理服务器的概念、工作原理以及如何使用Java来实现它。 首先,我们需要理解代理服务器的基本概念。代理服务器(Proxy Server)是一种特殊的网络服务器,它接收来自客户端的请求,并...
在本文中,我们将探讨如何使用Java的动态代理来实现数据库连接池,从而解决传统连接池设计中的耦合度问题和资源管理问题。 首先,数据库连接池是应用程序管理数据库连接的一种高效方式。它通过复用已建立的数据库...
在Java编程环境中,当需要通过局域网(LAN)进行网络通信时,有时会遇到需要使用代理服务器的情况。代理服务器可以提供多种功能,包括提高访问速度、缓存、过滤网络内容以及匿名上网等。本文将深入探讨如何在Java中...
总的来说,这个Java代理服务器示例提供了一个基础的代理服务实现,有助于理解网络编程、HTTP协议以及Java中的多线程和网络通信机制。通过扩展这个基础代码,可以实现更复杂的代理功能,如缓存、访问控制、加密等。
本主题将深入探讨如何使用Java语言来编写这样的代理服务器。以下是对这个主题的详细解析: 首先,理解HTTP代理服务器的基本原理是必要的。HTTP代理服务器作为客户端与目标服务器之间的中介,它接收客户端的HTTP请求...
Java代理服务器是一种网络通信工具,它允许客户端通过它与目标服务器进行通信,以此来隐藏原始客户端的IP地址或者实现特定的网络访问策略。在Java中实现代理服务器涉及到多个关键概念和技术,包括网络编程、多线程...
Java代理服务器程序是一种用于转发网络请求的应用,它在客户端与目标服务器之间起到中介的作用。这样的设计使得用户可以通过代理服务器访问互联网,从而实现多种功能,如匿名浏览、负载均衡、缓存优化、网络监控等。...
### Java代理服务器的实现 #### 概述 Java代理服务器是一种网络中间件,它作为客户端与目标服务器之间的中介,能够帮助转发HTTP请求和响应。在实际应用中,代理服务器不仅能够提升安全性,还能够用于缓存、日志...
本教程将深入探讨如何使用Java实现这一功能,并提供相关的源码下载,帮助开发者更好地理解和实践。 首先,我们要知道在Java中,我们通常使用`java.net.URL`类来表示一个网络资源的统一资源定位符,`java.net....
本教程将详细讲解如何使用Java编程语言来创建一个代理服务器,以实现对网络请求的转发处理。 首先,我们需要理解代理服务器的基本原理。代理服务器是一个位于客户端和目标服务器之间的中间服务器,它接收客户端的...
以上代码创建了一个简单的Java代理服务器,它监听8080端口,接收到客户端请求后,将请求转发到指定的目标服务器,并将响应回传给客户端。请注意,这只是一个基础示例,实际应用中还需要处理HTTP协议的解析,如请求头...
本文将详细介绍如何在Java中使用IE Proxy代理来实现这一功能。 首先,我们需要理解Java中的网络访问机制。Java使用`java.net`包中的`Socket`和`HttpURLConnection`等类来处理网络通信。当程序运行时,它会使用系统...
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个...
RabbIT是一个用Java语言实现的Web代理服务器,它允许用户通过配置来控制网络流量,提高网络访问效率,同时为开发和测试提供了便利。 【Java技术】 Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处...
然后,我们在打开URL连接时使用这个代理。 标签“java url 代理 下载图片”概括了本文讨论的主题。在实际应用中,你可能需要处理各种异常情况,例如网络连接问题、权限问题等。此外,你还可以考虑优化下载过程,...
代理服务器会创建一个监听套接字,等待客户端的连接请求。一旦客户端连接,服务器端就会创建一个新的Socket连接,用于与目标服务器通信。 2. **HTTP请求解析**:代理服务器需要解析客户端发送的HTTP请求,这包括...
1. **发起请求**:客户端通过`java.net.URL`类创建一个URL对象,然后使用`openConnection()`方法建立与服务器的连接。 2. **建立连接**:通过`HttpURLConnection`对象调用`connect()`方法,连接指定的网络资源,获取...
- **使用Java访问URL**:Java提供了`java.net.URL`类来创建URL对象,`java.net.HttpURLConnection`类用于建立HTTP连接。例如: ```java URL url = new URL(destUrl); HttpURLConnection httpUrl = ...
- `ProxyTest`可能是一个测试类或测试用例,用于验证代理服务器的功能是否正常,可能包含创建HTTP请求并发送到代理服务器的示例代码。 4. **源码学习要点** - **代理服务器的初始化**:设置监听端口,启动服务器...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...