Autore Topic: POST da https  (Letto 459 volte)

Offline breakdom

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsun Galaxy S2
POST da https
« il: 05 Maggio 2014, 19:03:26 CEST »
0
Buonasera  a tutti sto cercando di effettuare una richiesta verso un server https con il seguente pezzo di codice reperito da una guida online :

      HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
      DefaultHttpClient client = new DefaultHttpClient();
      SchemeRegistry registry = new SchemeRegistry();
      SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
      socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
      registry.register(new Scheme("https", socketFactory, 443));
      SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
      DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
      HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
      final String url = "https://miourl.it";
      HttpPost httpPost = new HttpPost(url);
      HttpResponse response = httpClient.execute(httpPost);

Il mio problema è che queste tre istruzioni :

                            SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
      socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
      registry.register(new Scheme("https", socketFactory, 443));

me le segna come errore e non mi suggerisce l'import di alcuna libreria come negli altri  casi.

Qualcuno mi puo' aiutare? Avete suggerimenti non troppo impegnativi per eseguire questa operazione?

Grazie.



Post unito: 05 Maggio 2014, 19:05:50 CEST
Ho provato anche nel modo seguente ma sul Samsung SII con KitKat funge mentre sul mio LGL9 con Android 4.2 no :


           //NELLA ACTIVITY
                                HttpURLConnection http = null;
                if (url.getProtocol().toLowerCase().equals("https")) {
                    trustAllHosts();
                   HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
                   https.setHostnameVerifier(DO_NOT_VERIFY);
                   http = https;
                } else {
                   http = (HttpURLConnection) url.openConnection();
                }




  //DI SEGUITO
       final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
             public boolean verify(String hostname, SSLSession session) {
                return true;
             }
          };
          private static void trustAllHosts() {
             TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                   return new java.security.cert.X509Certificate[] {};
                }

                public void checkClientTrusted(X509Certificate[] chain,
                      String authType) throws CertificateException {
                }

                public void checkServerTrusted(X509Certificate[] chain,
                      String authType) throws CertificateException {
                }
             } };
             try {
                SSLContext sc = SSLContext.getInstance("TLS");
                sc.init(null, trustAllCerts, new java.security.SecureRandom());
                HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
             } catch (Exception e) {
                e.printStackTrace();
             }
          }
« Ultima modifica: 05 Maggio 2014, 19:05:50 CEST da breakdom, Reason: Merged DoublePost »