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()));
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();
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 " );
System.getProperties().put( " https.proxyHost " , " 127.0.0.1 " );
System.getProperties().put( " https.proxyPort " , " 8080 " );