Problema HttpClient - Projeto Apache

2 respostas
Paulo_Faulstich

Olá pessoal,

Estou em um projeto na qual preciso fazer a requisição para um cliente através do meu código java. Como é uma requisição “https” estou utilizando o projeto “HttpClient” da Apache.

Mas esta ocorrendo uma exception e não estou conseguindo resolver … Se alguém tiver alguma dica.

Segue meu código.

final String url = "https://blabla";

                HttpClient httpclient = new DefaultHttpClient();
                HttpGet httpget = new HttpGet(url);
                HttpResponse response = httpclient.execute(httpget);
                HttpEntity entity = response.getEntity();
                InputStream in = entity.getContent();

Segue exception

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
        at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
        at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:129)
        at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:326)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129)
        at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
        at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:349)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

...

Abração.

2 Respostas

T

http://hc.apache.org/httpclient-3.x/sslguide.html

Paulo_Faulstich

Em primeiro lugar obrigado Thyngol

Utilizei outra forma que funcionou. Com isso não precisei de mais bibliotecas no meu projeto. Utilizei Um SSL fake.

Segue o código.

TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {

                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return null;
                        }

                        public void checkClientTrusted(
                                java.security.cert.X509Certificate[] certs, String authType) {
                        }

                        public void checkServerTrusted(
                                java.security.cert.X509Certificate[] certs, String authType) {
                        }
                    }
                };

                try {
                    SSLContext sc = SSLContext.getInstance("SSL");
                    sc.init(null, trustAllCerts, new java.security.SecureRandom());
                    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
                } catch (Exception e) {

                }

                final URL url = new URL("https://bláblá");                        

                System.out.print("url montada = " + url.toString());

                InputStream in = null;
                try {
                    in = url.openStream();
                    byte[] buffer = new byte[1024];
                    int i = 1;
                    while (i > 0) {
                        i = in.read(buffer);                      
                    }
                } catch (IOException e) {
                    throw e;
                }

Obrigado,

Abração.

Criado 31 de julho de 2009
Ultima resposta 31 de jul. de 2009
Respostas 2
Participantes 2