📜  android cleartext http (1)

📅  最后修改于: 2023-12-03 15:13:20.081000             🧑  作者: Mango

Android Cleartext HTTP

在 Android 应用程序开发中,我们经常需要和 Web 服务器进行交互来获取和发送数据,而这通常需要使用 HTTP 协议。然而,从 Android 9 (API 级别 28) 起,Android 不再支持在应用程序中使用明文 HTTP 请求。

明文 HTTP 请求是指通过未经加密的 HTTP 协议传输数据。这意味着数据在传输过程中可能会被窃听或篡改,从而使敏感数据暴露在不安全的环境中。因此,Google 为了提高 Android 应用程序的安全性,在 Android 9 中移除了对 HTTP 协议的明文支持。

解决方案

要在 Android 9 及更高版本中使用明文 HTTP 请求,我们必须在 AndroidManifest.xml 文件中添加以下代码:

<application
    ...
    android:usesCleartextTraffic="true"
    ...>
    ...
</application>

这将允许应用程序使用明文 HTTP 请求,但也会降低应用程序的安全性。因此,建议尽可能使用 HTTPS 协议来加密数据传输。

在使用明文 HTTP 请求时,我们还需要注意以下事项:

  • 要避免使用敏感数据(例如密码等)的明文传输。
  • 要避免使用明文 HTTP 请求对应用程序进行身份验证。
示例代码

以下是如何在 Android 中使用明文 HTTP 请求的示例代码:

try {
   URL url = new URL("http://example.com/data");
   HttpURLConnection connection = (HttpURLConnection) url.openConnection();
   connection.setRequestMethod("GET");
   connection.setDoInput(true);
   connection.connect();
   InputStream stream = connection.getInputStream();
   InputStreamReader reader = new InputStreamReader(stream);
   BufferedReader bufferedReader = new BufferedReader(reader);
   StringBuilder stringBuilder = new StringBuilder();
   String inputLine;
   while ((inputLine = bufferedReader.readLine()) != null) {
       stringBuilder.append(inputLine);
   }
   stream.close();
   connection.disconnect();
   String responseData = stringBuilder.toString();
} catch (Exception e) {
   e.printStackTrace();
}
参考资料