Как разместить HTTPS в Android

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

Я также проверил это: DefaultHttpClient, Certificates, Https и проблема с отправкой! Кажется, это может сработать, но блоггер просто оставляет вас висящим. Пошаговые инструкции будут полезны. Мне удалось получить свой сертификат, и я не смог выполнить его второй шаг.

Http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html Это кажется хорошим, но опять же, я теряю автора на последнем шаге: «Вернемся к нашему первоначальному коду клиента клиента «. Он тоже повсюду, я не знаю, какие библиотеки он использует. Он не объясняет свой код и

RestTemplate restTemplate = new RestTemplate(); 

Это еще один клиффер. Потому что этот класс не был предоставлен. Итак, если кто-то может объяснить, как подробно обрабатывать HTTPS-запрос, это было бы здорово. Мне нужно принять сам подписанный сертификат.

Solutions Collecting From Web of "Как разместить HTTPS в Android"

Надеюсь, это поможет. Это код, который я использовал и работал отлично.

 private HttpClient createHttpClient() { HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET); HttpProtocolParams.setUseExpectContinue(params, true); SchemeRegistry schReg = new SchemeRegistry(); schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg); return new DefaultHttpClient(conMgr, params); } 

Затем создайте HttpClient следующим образом:

 HttpClient httpClient = createHttpClient(); 

И использовать его с HttpPost.

Ура !!

РЕДАКТИРОВАТЬ

И я не использовал RestTemplate в своем коде. Я сделал простой почтовый запрос. Если вам нужна дополнительная помощь, просто дайте мне знать. Похоже, я недавно сделал что-то похожее на то, что вы ищете.

Это метод, который я использовал для сообщения HTTPS, и здесь я использовал Custom Certificate, поэтому измените назначение HttpClient с вашим собственным …

 public String postData(String url, String xmlQuery) { final String urlStr = url; final String xmlStr = xmlQuery; final StringBuilder sb = new StringBuilder(); Thread t1 = new Thread(new Runnable() { public void run() { HttpClient httpclient = MySSLSocketFactory.getNewHttpClient(); HttpPost httppost = new HttpPost(urlStr); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>( 1); nameValuePairs.add(new BasicNameValuePair("xml", xmlStr)); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); Log.d("Vivek", response.toString()); HttpEntity entity = response.getEntity(); InputStream i = entity.getContent(); Log.d("Vivek", i.toString()); InputStreamReader isr = new InputStreamReader(i); BufferedReader br = new BufferedReader(isr); String s = null; while ((s = br.readLine()) != null) { Log.d("YumZing", s); sb.append(s); } Log.d("Check Now",sb+""); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } /* * catch (ParserConfigurationException e) { // TODO * Auto-generated catch block e.printStackTrace(); } catch * (SAXException e) { // TODO Auto-generated catch block * e.printStackTrace(); } */ } }); t1.start(); try { t1.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Getting from Post Data Method "+sb.toString()); return sb.toString(); }