java - 不允许到 www.sia.co.id 的明文 HTTP 流量。不适用于 Android 版本的馅饼,但适用于 oreo 和所有馅饼。为什么?

标签 java android-studio android-9.0-pie

private String SendAndReceived() {

        HttpURLConnection con = Connector.connect(urlAddress);
        if (con == null) {

            return null;
        }

        try {

            OutputStream os = con.getOutputStream();

            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
            bw.write(new DataPackager(query).packData());

            bw.flush();

            bw.close();
            os.close();

            int responseCode = con.getResponseCode();
            StringBuffer response = new StringBuffer();

            if (responseCode == con.HTTP_OK) {

                InputStream is = con.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));

                String line;

                if (br != null) {

                    while ((line = br.readLine()) != null) {

                        response.append(line + "\n");
                    }

                } else {
                    return null;
                }

                br.close();
                is.close();

                return response.toString();


            } else {
                return String.valueOf(responseCode);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

}

调试:

W/System.err: java.io.IOException: Cleartext HTTP traffic to www.yesia.com not permitted
W/System.err:     at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
W/System.err:     at com.yesia.searchrecyclerview.MySQL.SenderReceiver.SendAndReceived(SenderReceiver.java:93)
W/System.err:     at com.yesia.searchrecyclerview.MySQL.SenderReceiver.doInBackground(SenderReceiver.java:51)
W/System.err:     at com.yesia.searchrecyclerview.MySQL.SenderReceiver.doInBackground(SenderReceiver.java:19)

最佳答案

您必须在 AndroidManifes.xml 文件中的应用程序标记上添加 android:usesCleartextTraffic="true" 属性。

还要添加这个。

<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />

检查this官方博客解释了为什么会发生这种情况,我们必须在 list 文件中添加。

关于java - 不允许到 www.sia.co.id 的明文 HTTP 流量。不适用于 Android 版本的馅饼,但适用于 oreo 和所有馅饼。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57863644/

相关文章:

java - 反射,创建一个给定 int 的特定对象

java - 隔离链表中的偶数和奇数节点

java - 使用JMF和RTP传输的视频 session

android - 重载解析歧义HashMap.get kotlin

安卓 : Allow Cleartext http

java - Java 上的 5x5 盒子数组?

Android Studio - 无法通知项目评估监听器错误

android - 代码检查高亮 : cannot set different highlight style for Info and Weak Warning severities

java - 如何为应用内开发工具模拟 NFC 标签?

java - Android P,下载没有开始使用下载管理器?