Student

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (2)
  • Как авторизироваться на сайте по HTTPS в Android?

    3mph4515
    @3mph4515
    Хм, а в чем у Вас собственно загвоздка? Делаете не HHTPClient, а HTTPS по сертификату. С ним и работаете

    Вот пример из моего проекта:

    private static DefaultHttpClient getThreadSafeClientHTTPS(Context context)
    			throws KeyManagementException, UnrecoverableKeyException, NoSuchAlgorithmException,
    			KeyStoreException, java.security.cert.CertificateException, FileNotFoundException {
    		KeyStore trustStore = KeyStore.getInstance("BKS");
    		AssetManager assetManager = context.getAssets();
    		InputStream instream = null;
    		try {
    			instream = assetManager.open("PATH TO CERT");
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		try {
    			// password 
    			trustStore.load(instream, PASSWORD HERE);
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				instream.close();
    			} catch (Exception ignore) {
    			}
    		}
    
    		// Create socket factory with given keystore.
    		SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
    		socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    		Scheme sch = new Scheme("https", socketFactory, 443);
    
    		HttpParams params = new BasicHttpParams();
    		params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
    		DefaultHttpClient client = new DefaultHttpClient(params);
    		ClientConnectionManager mgr = client.getConnectionManager();
    		params = client.getParams();
    
    		int timeoutConnection = 10 * 1000;
    		HttpConnectionParams.setConnectionTimeout(params, timeoutConnection);
    		// Set the default socket timeout (SO_TIMEOUT)
    		// in milliseconds which is the timeout for waiting for data.
    		int timeoutSocket = 20 * 1000;
    		HttpConnectionParams.setSoTimeout(params, timeoutSocket);
    		client = new DefaultHttpClient(new ThreadSafeClientConnManager(params, mgr.getSchemeRegistry()),
    				params);
    		client.getConnectionManager().getSchemeRegistry().register(sch);
    		return client;
    	}
    Ответ написан
    Комментировать