Согласно Android-документации :
Предполагая, что у вас есть веб-сервер с сертификатом, выданным известным центром сертификации, вы можете сделать безопасный запрос с помощью простого кодаэто:
URL url = new URL("https://wikipedia.org");
URLConnection urlConnection = url.openConnection();
InputStream in = urlConnection.getInputStream();
copyInputStreamToOutputStream(in, System.out);
Да, это действительно может быть так просто.
В настоящее время я работаю над проектом Android и теперь хочу начать внедрение пользовательской системы (база данных пользователей / паролей, возможности регистрации / входа и т. Д.).
ЗдесьВот как мы сейчас работаем с соединением (в разделе Android проекта):
package com.example.payne.simpletestapp;
import org.osmdroid.util.BoundingBox;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ServerConnection {
public String serverAddress;
public int port;
public ServerConnection(String addr, int port){
this.serverAddress = addr;
this.port = port;
}
public ServerConnection(String addr){
this.port = 80;
this.serverAddress = addr;
}
/**
* Envoie une requête au serveur de façon périodique.
* <p></p>
* Reçoit toutes les alertes sur le territoire
*
* @return
*/
public String ping(BoundingBox boundingBox) throws Exception {
String param =
"?nord=" + boundingBox.getLatNorth() +
"&sud=" + boundingBox.getLatSouth() +
"&est=" + boundingBox.getLonEast() +
"&ouest=" + boundingBox.getLonWest();
return this.getRequest("/alertes", param);
}
public String getRequest(final String path, final String param) throws Exception {
final Response result = new Response();
Thread connection = new Thread(new Runnable() {
@Override
public void run() {
try{
URL obj = new URL(serverAddress + path + param);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
// int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
result.response = response.toString();
} catch (Exception e){
e.printStackTrace();
}
}
});
connection.start();
connection.join();
return result.response;
}
public Boolean postAlert(Alerte alerte) {
boolean success = false;
alerte.log();
String param = "?type=" + alerte.type +
"&lat=" + alerte.getLatitude() +
"&lng=" + alerte.getLongitude();
try {
this.getRequest("/putAlert", param);
success = true;
} catch (Exception e) {
e.printStackTrace();
}
return success;
}
}
Обратите внимание, что в другом месте другой член команды, похоже, устанавливает соединения по-другому (в разделе «бэкэнд»).проекта, который используется сервером, а не обязательно Android):
private String getRssFeed() {
try {
String rss = "";
URL rssSource = new URL("https://anURLwithHTTPS.com/");
URLConnection rssSrc = rssSource.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
rssSrc.getInputStream(), StandardCharsets.UTF_8));
String inputLine;
while ((inputLine = in.readLine()) != null) {
rss += inputLine;
}
in.close();
String rssCleaned = rss.replaceAll("<", "<").replaceAll(">", ">").substring(564);
return rssCleaned;
} catch (MalformedURLException ex) {
Logger.getLogger(AlertesFluxRss.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(AlertesFluxRss.class.getName()).log(Level.SEVERE, null, ex);
}
return "";
}
Вопросы:
- Будет ли первый представленный код (связанный с Android)1) использовать зашифрованное соединение (HTTPS)?
- Как насчет второго?
- Как мы можем проверить, была ли отправленная информация зашифрована?
- Передается ли наHttpURLConnection это угроза?Кажется, в документации указывается, что он автоматически преобразуется в «HttpsURLConnection».
- Поскольку HttpsURLConnection расширяет HttpURLConnection, он имеет все возможности HttpURLConnection и более, верно?
Я нашел это , но это было не совсем то, что я искал.
Нашей текущей идеей для регистрации новых пользователей будет отправка их информации в URL через зашифрованное соединение (по линииhttps://myWebsite.com/api/?user=Bob&pass=amazing) на сервер (размещен на https://www.heroku.com).
Если есть более эффективные способы сделать такую вещь, пожалуйста, дайте мне знать. Предложения будут с удовольствием рассмотрены. Я не слишком осведомленкогда дело доходит до библиотек, так что, пожалуйста, поделитесь всем, что вы знаете, что может сделать мой подход более безопасным и быстрым для реализации.
Большое спасибо за вашу помощь заранее! :)