Java编写网络应用程序,局域网有代理服务器,如何穿越代理服务器?
---------------------------------------------------------------
在main方法中加入
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", "*.*.*.*");
systemProperties.setProperty("http.proxyPort", "****");
---------------------------------------------------------------
如果需要用户和密码的话,还要实现继承Authenticator类,并实现getPasswordAuthentication()方法,以实现验证。
---------------------------------------------------------------
import java.net.*;
/***************************
***
*** 用户名认证
***
** 2003.10.10
**************************
*/
public class MyAuthenticator extends Authenticator
{
private String username,password;
public MyAuthenticator(String username,String password)
{
this.username=username;
this.password=password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username,password.toCharArray());
}
}//end MyAuthenticator
import java.net.*;
/*****************************
**
** 实现二级代理的配置
**
** 2003.10.10
*****************************
*/
public class ProxyConfiguration
{
//代理设置变量
private String socksProxyHost = "202.119.24.34";//socks代理
private String socksProxyPort = "1080";//socks代理端口
private String httpProxyHost = "211.167.0.131";//http代理
private String httpProxyPort = "80";//http代理端口
private String username = "aaaaaa";//用户名
private String password = "123456";//密码
public ProxyConfiguration()
{
init();
}
public void init()
{
System.getProperties().setProperty( "socksProxyHost",socksProxyHost);
System.getProperties().setProperty( "socksProxyPort",socksProxyPort);
System.getProperties().setProperty( "http.proxyHost",httpProxyHost);
System.getProperties().setProperty( "http.proxyPort",httpProxyPort);
confirmUser();
}
public void setSocksProxyHost(String socksProxyHost) {
this.socksProxyHost = socksProxyHost;
System.getProperties().setProperty( "socksProxyHost",socksProxyHost);
}
public String getSocksProxyHost() {
return this.socksProxyHost;
}
public void setHttpProxyHost(String httpProxyHost) {
this.httpProxyHost = httpProxyHost;
System.getProperties().setProperty( "http.proxyHost",httpProxyHost);
}
public String getHttpProxyHost() {
return this.httpProxyHost;
}
public void setSocksProxyPort(String socksProxyPort) {
this.socksProxyPort = socksProxyPort;
System.getProperties().setProperty( "socksProxyPort",socksProxyPort);
}
public String getSocksProxyPort() {
return this.socksProxyPort;
}
public void setHttpProxyPort(String httpProxyPort) {
this.httpProxyPort = httpProxyPort;
System.getProperties().setProperty( "http.proxyPort",httpProxyPort);
}
public String getHttpProxyPort() {
return this.httpProxyPort;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return this.password;
}
public void confirmUser() {
Authenticator.setDefault(new MyAuthenticator(this.username,this.password));
}
}
---------------------------------------------------------------
在main方法中加入
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", "*.*.*.*");
systemProperties.setProperty("http.proxyPort", "****");
---------------------------------------------------------------
如果需要用户和密码的话,还要实现继承Authenticator类,并实现getPasswordAuthentication()方法,以实现验证。
---------------------------------------------------------------
import java.net.*;
/***************************
***
*** 用户名认证
***
** 2003.10.10
**************************
*/
public class MyAuthenticator extends Authenticator
{
private String username,password;
public MyAuthenticator(String username,String password)
{
this.username=username;
this.password=password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username,password.toCharArray());
}
}//end MyAuthenticator
import java.net.*;
/*****************************
**
** 实现二级代理的配置
**
** 2003.10.10
*****************************
*/
public class ProxyConfiguration
{
//代理设置变量
private String socksProxyHost = "202.119.24.34";//socks代理
private String socksProxyPort = "1080";//socks代理端口
private String httpProxyHost = "211.167.0.131";//http代理
private String httpProxyPort = "80";//http代理端口
private String username = "aaaaaa";//用户名
private String password = "123456";//密码
public ProxyConfiguration()
{
init();
}
public void init()
{
System.getProperties().setProperty( "socksProxyHost",socksProxyHost);
System.getProperties().setProperty( "socksProxyPort",socksProxyPort);
System.getProperties().setProperty( "http.proxyHost",httpProxyHost);
System.getProperties().setProperty( "http.proxyPort",httpProxyPort);
confirmUser();
}
public void setSocksProxyHost(String socksProxyHost) {
this.socksProxyHost = socksProxyHost;
System.getProperties().setProperty( "socksProxyHost",socksProxyHost);
}
public String getSocksProxyHost() {
return this.socksProxyHost;
}
public void setHttpProxyHost(String httpProxyHost) {
this.httpProxyHost = httpProxyHost;
System.getProperties().setProperty( "http.proxyHost",httpProxyHost);
}
public String getHttpProxyHost() {
return this.httpProxyHost;
}
public void setSocksProxyPort(String socksProxyPort) {
this.socksProxyPort = socksProxyPort;
System.getProperties().setProperty( "socksProxyPort",socksProxyPort);
}
public String getSocksProxyPort() {
return this.socksProxyPort;
}
public void setHttpProxyPort(String httpProxyPort) {
this.httpProxyPort = httpProxyPort;
System.getProperties().setProperty( "http.proxyPort",httpProxyPort);
}
public String getHttpProxyPort() {
return this.httpProxyPort;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return this.password;
}
public void confirmUser() {
Authenticator.setDefault(new MyAuthenticator(this.username,this.password));
}
}