Me gustaría configurar un servidor proxy para mi cliente de Jersey.
No quiero configurar el proxy para toda la aplicación (usando argumentos de JVM como http.proxyHost), y prefiero no utilizar el cliente de Apache.
He leído here que hay una opción para hacerlo proporcionando HttpUrlConnection a través de HttpUrlConnectionFactory, pero no he podido encontrar ningún ejemplo de código.
¿Alguien sabe cómo puedo hacerlo?
Gracias!Configurar proxy para el cliente de Jersey
Respuesta
Con la ayuda de Luca, yo tengo hecho:
Implementar HttpURLConnectionFactory, y reemplazar el método 'getHttpURLConnection', mi aplicación es (gracias a Luca):
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 3128));
return new HttpURLConnection(url, proxy);
Ante s Al instanciar el Jersey Client, cree un nuevo
URLConnectionClientHandler
y proporcione suHttpURLConnectionFactory
en su constructor. Luego, cree un nuevo Cliente y proporcione su ClientHandler en el constructor del Cliente. Mi código:
URLConnectionClientHandler urlConnectionClientHandler = new URLConnectionClientHandler(new MyHttpURLConnectionFactory());
_client = new Client(urlConnectionClientHandler);
la esperanza de que la ayuda.
Trate
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
conn = new URL(url).openConnection(proxy);
No estoy seguro de cómo, actualmente estoy usando 'Client.create (config)'. No se pudo encontrar ninguna opción para usar 'UrlConnection' al crear el cliente. – danieln
Primero de todo lo creado esta clase
import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
/**
*
* @author Aimable
*/
public class ConnectionFactory implements HttpURLConnectionFactory {
Proxy proxy;
String proxyHost;
Integer proxyPort;
SSLContext sslContext;
public ConnectionFactory() {
}
public ConnectionFactory(String proxyHost, Integer proxyPort) {
this.proxyHost = proxyHost;
this.proxyPort = proxyPort;
}
private void initializeProxy() {
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
}
@Override
public HttpURLConnection getHttpURLConnection(URL url) throws IOException {
initializeProxy();
HttpURLConnection con = (HttpURLConnection) url.openConnection(proxy);
if (con instanceof HttpsURLConnection) {
System.out.println("The valus is....");
HttpsURLConnection httpsCon = (HttpsURLConnection) url.openConnection(proxy);
httpsCon.setHostnameVerifier(getHostnameVerifier());
httpsCon.setSSLSocketFactory(getSslContext().getSocketFactory());
return httpsCon;
} else {
return con;
}
}
public SSLContext getSslContext() {
try {
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[]{new SecureTrustManager()}, new SecureRandom());
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
} catch (KeyManagementException ex) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
return sslContext;
}
private HostnameVerifier getHostnameVerifier() {
return new HostnameVerifier() {
@Override
public boolean verify(String hostname,
javax.net.ssl.SSLSession sslSession) {
return true;
}
};
}
}
entonces yo también crear otra clase llamada SecureTrustManager
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
/**
*
* @author Aimable
*/
public class SecureTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
public boolean isClientTrusted(X509Certificate[] arg0) {
return true;
}
public boolean isServerTrusted(X509Certificate[] arg0) {
return true;
}
}
continuación, después de la creación de esta clase Voy a llamar al cliente como éste
URLConnectionClientHandler cc = new URLConnectionClientHandler(new ConnectionFactory(webProxy.getWebserviceProxyHost(), webProxy.getWebserviceProxyPort()));
client = new Client(cc);
client.setConnectTimeout(2000000);
reemplace webProxy.getWeserviceHost por su proxyHost y webProxy.getWebservi ceProxyPort() por el puerto proxy.
Esto funcionó para mí y debería funcionar también para usted. Tenga en cuenta que estoy usando Jersey 1.8, pero también debería funcionar para Jersey 2
gracias, esto funcionó para mí. – whoami
- 1. Jersey Client + set proxy
- 2. Dependencias del cliente Jersey
- 3. Jersey multiparte cliente Subir
- 4. ¿Cómo configurar el proxy con credenciales para el cliente WCF generado?
- 5. Cómo configurar un proxy HTTP para svn
- 6. ¿Deshabilitar proxy web para un cliente WCF?
- 7. Usando el cliente Jersey para hacer una operación POST
- 8. ¿Cómo configurar cookies en Jersey?
- 9. progreso de carga del cliente de Jersey
- 10. Cómo configurar un proxy para Apache Karaf
- 11. Cómo configurar un proxy para apt-cyg?
- 12. Configurar un proxy HTTP para insertar un encabezado
- 13. Jersey cliente no establece Content-Length
- 14. ¿Cómo configurar el cliente de vista web?
- 15. Inicialización de proxy de cliente WCF
- 16. ¿Cómo configurar un Proxy inverso de Squid?
- 17. WCF: Colección tipo de proxy en el cliente
- 18. proxy malvado para probar la interacción cliente/servidor
- 19. ¿Cómo configurar un repositorio proxy local para SBT?
- 20. Configurar proxy WiFi sin rooting phone
- 21. ¿Cómo configurar Apache para que funcione como proxy (balanceador de carga) para el servidor j2ee?
- 22. Configurar un proxy HTTP en una aplicación web de Spring
- 23. Jersey: Inyecte el componente Spring en ContainerRequestFilter
- 24. Conseguir NullPointException con Jersey RESTO cliente en Android
- 25. ¿Configurar Fiddler para usar el proxy de la red de la compañía?
- 26. cómo configurar SSL para CAS y Cliente (diferentes máquinas)
- 27. Obtener el estado de una solicitud PUT en el cliente Jersey
- 28. ¿Cómo configurar el curl para usar un proxy de manera permanente?
- 29. API de cliente Java REST para Android
- 30. ¿Cliente de reposo para Java?
Tenga en cuenta que esto solo funciona con Java 6 en adelante - el constructor HttpURLConnection con Proxy no está disponible en Java 5. –