Android: Richiesto di Https

Come faccio a evitare l'exception "javax.net.ssl.SSLPeerUnverifiedException: peer non autenticata" e l'apache lib lib di Android? Il constructor SSLSocketFactory (SSLContext) è indefinito "nel fare una richiesta Https?

  • come get una posizione dell'elenco di oggetti facendo clic sul button all'interno di esso?
  • Come si riceve una chiamata in output in broadcastreceiver
  • Utilizzo di tabelle temp nei database SQLite
  • Come avviare programmaticamente una ricerca vocale Google Now?
  • Come impostare il button da un poligono di contorno? android
  • Imansible analizzare l'arrays di Json usando Gson
  • Come creare la mia libreria android e ospitarla
  • Android: limiti l'utente per select solo dal text di autocompletamento
  • PercentRelativeLayout ok su Emulator, non va bene al telefono
  • Oltre a popolare Logcat, le windows vengono bloccate, finché non viene eseguito il riavvio rigido
  • opengl es api senza context corrente
  • Se EditText.getText (). ToString () == "" non funziona;
  • 2 Solutions collect form web for “Android: Richiesto di Https”

    Questo metodo assume un'istanza HttpClient e restituisce un'istanza HttpClient pronta per https.

    private HttpClient sslClient(HttpClient client) { try { X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new MySSLSocketFactory(ctx); ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = client.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", ssf, 443)); return new DefaultHttpClient(ccm, client.getParams()); } catch (Exception ex) { return null; } } 

    Poiché l'org.apache.http.conn.ssl.SSLSocketFactory di Android non dispone del constructor SSLsocketFactory (SSLContext), ho esteso la class come segue.

      public class MySSLSocketFactory extends SSLSocketFactory { SSLContext sslContext = SSLContext.getInstance("TLS"); public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(truststore); TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; sslContext.init(null, new TrustManager[] { tm }, null); } public MySSLSocketFactory(SSLContext context) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, UnrecoverableKeyException { super(null); sslContext = context; } @Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose); } @Override public Socket createSocket() throws IOException { return sslContext.getSocketFactory().createSocket(); } } 

    Eccellente articolo qui: http://javaskeleton.blogspot.com/2010/07/avoiding-peer-not-authenticated-with.html

    E qui aiuto: fidelizzare tutti i certificati utilizzando HttpClient su HTTPS

    Ho avuto un problema simile che è più simile a questa domanda, ma la causa principale era completamente diversa da quella menzionata in entrambe le domande.

    Stavo usando DefaultHttpClient come httpclient per richiedere i collegamenti https://maps.googleapis.com . Stavo cercando tutta la banchina di soluzioni proposte, ma nessuno ha funzionato per me. Dopo alcune ore cercando di risolverlo, ha trovato la causa principale: il mio dispositivo è stato connesso a un guest WIFI che probabilmente ha alcune regole di filtraggio specifiche che bloccano le parti di networking in questione. Passare a una networking diversa risolve il mio problema.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.