Подключение HTTPS Android

ваша функция щелчка не работает, потому что jQuery работает на стороне клиента и php работает на стороне сервера , поэтому при выполнении скрипта он не найдет конкретный идентификатор, потому что таблица рендеринг через php.

Это делается делегированием событий. Событие будет привязано к элементу класса-оболочки, но будет делегировано элементу класса-селектора. Вот как это работает.

$('.wrapper-class').on("click", '.selector-class', function() {
    // Your code here
});

Примечание: элемент класса-обертки может быть чем угодно. документ, тело или ваша обертка. Оболочка уже должна существовать.

99
задан Janusz 13 August 2010 в 16:01
поделиться

4 ответа

Я предполагаю, но если вы хотите, чтобы произошло фактическое рукопожатие, вы должны сообщить Android о вашем сертификате. Если вы хотите просто принять что бы то ни было, используйте этот псевдокод, чтобы получить то, что вам нужно, с помощью HTTP-клиента Apache:

SchemeRegistry schemeRegistry = new SchemeRegistry ();

schemeRegistry.register (new Scheme ("http",
    PlainSocketFactory.getSocketFactory (), 80));
schemeRegistry.register (new Scheme ("https",
    new CustomSSLSocketFactory (), 443));

ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager (
    params, schemeRegistry);


return new DefaultHttpClient (cm, params);

CustomSSLSocketFactory:

public class CustomSSLSocketFactory extends org.apache.http.conn.ssl.SSLSocketFactory
{
private SSLSocketFactory FACTORY = HttpsURLConnection.getDefaultSSLSocketFactory ();

public CustomSSLSocketFactory ()
    {
    super(null);
    try
        {
        SSLContext context = SSLContext.getInstance ("TLS");
        TrustManager[] tm = new TrustManager[] { new FullX509TrustManager () };
        context.init (null, tm, new SecureRandom ());

        FACTORY = context.getSocketFactory ();
        }
    catch (Exception e)
        {
        e.printStackTrace();
        }
    }

public Socket createSocket() throws IOException
{
    return FACTORY.createSocket();
}

 // TODO: add other methods like createSocket() and getDefaultCipherSuites().
 // Hint: they all just make a call to member FACTORY 
}

FullX509TrustManager - это класс, который реализует javax.net.ssl.X509TrustManager, но все же ни один из методов на самом деле не выполняет никакой работы, получите образец здесь .

Удачи!

44
ответ дан 24 November 2019 в 05:03
поделиться

Вероятно, можно попробовать что-то вроде этого. Это помогло мне

    SslContextFactory sec = new SslContextFactory();
    sec.setValidateCerts(false);
    sec.setTrustAll(true);

    org.eclipse.jetty.websocket.client.WebSocketClient client = new WebSocketClient(sec);
0
ответ дан 24 November 2019 в 05:03
поделиться

Я не знаю особенностей Android для ssl-сертификатов, но было бы логично, что Android сразу же не примет самоподписанный ssl-сертификат. Я нашел этот пост на форумах Android, который, похоже, посвящен той же проблеме: http://androidforums.com/android-applications/950-imap-self-signed-ssl-certificates.html

1
ответ дан 24 November 2019 в 05:03
поделиться

Это то, что я делаю. Он просто больше не проверяет сертификат.

// always verify the host - dont check for certificate
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};

/**
 * Trust every server - dont check for any certificate
 */
private static void trustAllHosts() {
    // Create a trust manager that does not validate certificate chains
    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 {
        }
    } };

    // Install the all-trusting trust manager
    try {
        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection
                .setDefaultSSLSocketFactory(sc.getSocketFactory());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

и

    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();
    }
87
ответ дан 24 November 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: