在Java程序中通过代理服务器访问互联网

 

HttpClient source

HttpClient client  =   new  HttpClient();
client.getHostConfiguration().setProxy(
" host " , port);
client.getState().setProxyCredentials(AuthScope.ANY, 
new  UsernamePasswordCredentials( " username " " password " ));

GetMethod method 
=   new  GetMethod( " http://www.csdn.net " );
client.executeMethod(method);
        
System.out.println(
new  String(method.getResponseBody()));

如果proxy的认证需要NTLM协议,就不能使用UsernamePasswordCredentials,需要用NTCredentials代替

URLConnection source

System.getProperties().put( " proxySet " " true " );
System.getProperties().put(
" proxyHost " " host " );
System.getProperties().put(
" proxyPort " " port " );
                
URL url 
=   new URL(" http://www.csdn.net ");
URLConnection connection 
=  url.openConnection();
connection.setRequestProperty(
" Proxy-Authorization " new
BASE64Encoder().encode(
" username:password " .getBytes()));
                
connection.setDoOutput(
true );
OutputStream outputStream 
=  connection.getOutputStream();
outputStream.write(
" ServiceID=Startup " .getBytes());
InputStream inputStream 
=  connection.getInputStream();
connection.connect();
                
BufferedReader in 
=   new  BufferedReader( new
InputStreamReader(connection.getInputStream()));
String inputLine;
                
while  ((inputLine  =  in.readLine())  !=   null )
System.out.println(inputLine);
in.close();

URLConnection对于NTLM是透明的,不需要额外的代码。

如果所访问的网站是需要SSL协议,则要增加如下代码

 

System.getProperties().put( " https.proxySet " " true " );
System.getProperties().put(
" https.proxyHost " " 127.0.0.1 " );
System.getProperties().put(
" https.proxyPort " " 8080 " );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值