В настоящее время я работаю над своим первым приложением для Android и первым API для веб-сайта моей организации.Я пытаюсь подключиться к API из приложения Android с помощью безопасного соединения.Наш веб-сайт имеет тестовый порт на 8090, который я пытаюсь использовать для тестирования API, но проблема, с которой я сталкиваюсь, заключается в том, что у меня есть самозаверяющий сертификат на веб-сайте, который, из того, что я прочитал в Интернете, не подходит для Android-приложений.не нравится.Чтобы убедиться, что нет проблем с API, я использовал его с подключением http, а не https, и он прекрасно работает.Я пробовал пару решений, которые я нашел в Интернете, включая пару с этого сайта, но ни одно из них не работает.Опять же, у меня нет большого опыта разработки для Android, поэтому большинство моих попыток было просто скопировать и вставить из решения, которое я нашел в Интернете.Вот некоторые ссылки на то, что я пробовал:
Https Connection Android
http://yekmer.posterous.com/how-to-accept-self-signed-certificates-in-and
есть другие страницы, которые я не могу найтиссылки на сейчас, но ниже приведен код, который я сейчас использую для подключения:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://website.edu:8090/api.php?");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("method", "login"));
nameValuePairs.add(new BasicNameValuePair("user", username.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("pass", md5(password.getText().toString())));
nameValuePairs.add(new BasicNameValuePair("submitLogin", "1"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
HttpParams params = httppost.getParams();
HttpConnectionParams.setConnectionTimeout(params, 45000);
HttpConnectionParams.setSoTimeout(params, 45000);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Я также хотел бы добавить, что покупка сертификата не вариант, так как у нас нет бюджета на работутак что все, что могло бы решить проблему с самозаверяющим сертификатом, было бы замечательно.Заранее спасибо!