Форум программистов, компьютерный форум CyberForum.ru

Https соединение с сертфикатам пользователя и сервера - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка: переполнение стека http://www.cyberforum.ru/android-dev/thread656830.html
Я хочу. чтоб при изменении текста в edittext1 изменялся текст в edittext2 и наоборот при изменении текста в edittext2 изменялся текст в edittext1 ed1.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { }
Программирование Android Что не так? Вот класс: public class ReadStringJson { public String url; public ReadStringJson(String url) { this.url = url; } public JSONArray readFromServer(){ http://www.cyberforum.ru/android-dev/thread656723.html
Автоматическое обновление текста Программирование Android
Как сделать, что бы текст в textview, менялся каждые 10 секунд
Как спроектировать приложение Программирование Android
Добрый день! Уважаемые разработчики, помогите определиться в выборе компонент, при закладке программы. Буду писать программу только для планшета, т.е. для Android ICS 4.0.0. и выше. До этого был опыт разработки под 2.3.3 но для планшетов здесь наверное другой компонентный набор должен быть. Суть программы: план схема помещения, отображающая помещение или план квартиры сверху. Если план...
Программирование Android Отправка POST запроса http://www.cyberforum.ru/android-dev/thread655680.html
Здраствуйте, нужно на сайт отправить пост запрос з логином і паролем, потом сайт оддаст строку, ее нужно вивсти в текствів, у меня есть код но он не работаєт: String result = new String(""); try{ HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://мой сайт");
Программирование Android admob Здравствуйте у меня такой вопрос по admob. у меня на admob есть уже доларов 19, в настройках указал данные карточки visa classic от сбербанка рублевая. сможет ли на неё причислять деньги или нужно открыть доллоровый счет? выбрал Pay via ACH/Wire подробнее

Показать сообщение отдельно
Olix
6 / 6 / 0
Регистрация: 02.04.2009
Сообщений: 46
03.10.2012, 14:30  [ТС]
Меня грызла это недоделанное https соединение. В итоге сегодня убила день на поиск информации и на различные попытки. И все такие труд вознаграждается!
Вот замечательная статейка ,которая помогла мне:
http://www.javadocexamples.com/java_...mple.java.html
1. Закидываю сертифкат в формате p12 на телефон
2. Узнаю путь к нему - path
3. "Создаем хранилище для клиентского сертфиката":

Java
1
2
3
4
5
6
        File f = new File(pathFilep12);
        final InputStream in = new FileInputStream(f);
        KeyManagerFactory mgrFact = KeyManagerFactory.getInstance("SunX509");
        KeyStore clientStore = KeyStore.getInstance("PKCS12");
        clientStore.load(in, PASSWORD.toCharArray());
        mgrFact.init(clientStore, PASSWORD.toCharArray());
Тут PASSWORD - пароль от самого сертификата. Где-то читала в какой-то статье, что пароль от хранилища должен быть равен паролю от сертификата, иначе будет ошибка.

4. "Создаем серверное хранилище" или как оно там еще называется:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                    final TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                System.out.println("getAcceptedIssuers");
                 return null;
            }
            public void checkServerTrusted(X509Certificate[] chain, String authType)
                    throws CertificateException {
                System.out.println("Сведения о сертификате : " +       chain[0].getIssuerX500Principal().getName() + "\n Тип авторизации : " + authType);
            }
            public void checkClientTrusted(X509Certificate[] chain, String authType)
                    throws CertificateException {
                System.out.println("checkClientTrusted : " + authType);
            }
        } };
5. sslContext :

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
                SSLContext sslContext = null;
        try {
            sslContext = SSLContext.getInstance("TLS");
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            sslContext.init(mgrFact.getKeyManagers(),trustAllCerts, new java.security.SecureRandom());
        } catch (KeyManagementException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
6. Само подключение:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
                final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
                String url = "https://xxx.xxx.xxx";
        HttpURLConnection conn = null;      
        try {
            conn = (HttpURLConnection) new URL(url).openConnection();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
                conn.setRequestProperty("Authorization", "Basic "+encodeBase64("user:password") ); //это для тех, кому нужна еще авторизация 
                conn.setRequestProperty("Connection", "close");     
        conn.setRequestProperty("Accept-Charset", "cp1251");    
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        
        ((HttpsURLConnection) conn).setSSLSocketFactory(sslSocketFactory);
        ((HttpsURLConnection) conn).setHostnameVerifier(new HostnameVerifier() {
            public boolean verify(String arg0, SSLSession arg1) {           
                return true;
            }
        });
        
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setReadTimeout(10000 );
        conn.setConnectTimeout(15000);
        try {
            conn.setRequestMethod("GET");
        } catch (ProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("e "+e.toString());
        }
        
        
        try {
            if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.out.println("error "+ conn.getResponseCode());
            }else{
                System.out.println("ok "+conn.getResponseCode()+" response "+conn.getResponseMessage());
                System.out.println("conn.getResponseMessage() "+);
                String resp= readStreamToString(conn.getInputStream(), "cp1251");
                System.out.println("Ответ: "+resp);             
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("e "+e.toString());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("e "+e.toString());
        }
 
...
 
 
private static String readStreamToString(InputStream in, String encoding)
            throws IOException {
        StringBuffer b = new StringBuffer();
        InputStreamReader r = new InputStreamReader(in, encoding);
        int c;
        while ((c = r.read()) != -1) {
            b.append((char)c);
        }
        return b.toString();
    }
Это код приведен без проверки на ошибки, закрытия потоков. Выдернуты основные шаги. Надеюсь кому-нибудь это поможет)))
Всем Спасибо!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru