proxyhost - set proxy java
La forma más fácil de obtener una página SSL a través de un proxy en Java (3)
Me gustaría buscar una página SSL en Java. El problema es que tengo que autenticar contra un proxy http.
Así que quiero una forma simple de buscar esta página. Intenté el servidor de Apache Commons, pero es demasiado sobrecargado para mi problema.
Intenté esta pieza de código, pero no contiene una acción de autenticación:
import java.io.*;
import java.net.*;
public class ProxyTest {
public static void main(String[] args) throws ClientProtocolException, IOException {
URL url = new URL("https://ssl.site");
Socket s = new Socket("proxy.address", 8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP, s.getLocalSocketAddress());
URLConnection connection = url.openConnection(proxy);
InputStream inputStream = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String tmpLine = "";
while ((tmpLine = br.readLine()) != null) {
System.out.println(tmpLine);
}
}
}
¿Alguien puede proporcionar información sobre cómo implementarlo de una manera fácil?
Gracias por adelantado
con apache commons-http-client 4: encontrará muchos ejemplos @ http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/ http / examples / client /
org.apache.commons.httpclient.HttpClient es tu amigo,
Código de muestra de http://hc.apache.org/httpclient-3.x/sslguide.html
HttpClient httpclient = new HttpClient();
httpclient.getHostConfiguration().setProxy("myproxyhost", 8080);
httpclient.getState().setProxyCredentials("my-proxy-realm", " myproxyhost",
new UsernamePasswordCredentials("my-proxy-username", "my-proxy-password"));
GetMethod httpget = new GetMethod("https://www.verisign.com/");
try {
httpclient.executeMethod(httpget);
System.out.println(httpget.getStatusLine());
} finally {
httpget.releaseConnection();
}
Debe configurar un java.net.Authenticator antes de abrir su conexión:
...
public static void main(String[] args) throws Exception {
// Set the username and password in a manner which doesn''t leave it visible.
final String username = Console.readLine("[%s]", "Proxy Username");
final char[] password = Console.readPassword("[%s"], "Proxy Password:");
// Use a anonymous class for our authenticator for brevity
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
URL url = new URL("https://ssl.site");
...
}
Para eliminar su autenticador después de que haya terminado, llame al siguiente código:
Authenticator.setDefault(null);
El autenticador en Java SE 6 admite HTTP Basic
, HTTP Digest
y NTLM
. Para obtener más información, consulte la documentación de Http Authentication en sun.com