使用来自资源 network_security_config debugBuild 的网络安全配置:true

Using Network Security Config from resource network_security_config debugBuild: true

我正在尝试这段代码,它应该在 Logcat 中显示某些网站的 html 代码。 但我只是得到 Using Network Security Config from resource network_security_config debugBuild: truejava.net.UnknownHostException: Unable to resolve host "www.google.co.in": No address associated with hostname

我的互联网连接处于活动状态。我正在学习 android 教程,那个人也做了同样的事情并得到了结果。(他使用的是旧版本的 android studio

java代码

package com.example.newapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.ExecutionException;

public class MainActivity extends AppCompatActivity {

    public static class DownloadTask extends AsyncTask<String, Void, String>
    {

        @Override
        protected String doInBackground(String... urls) {
            String result= "";
            URL url;
            HttpURLConnection urlConnection= null;
            try{
                url= new URL(urls[0]);

                urlConnection=(HttpURLConnection) url.openConnection();
                InputStream in = urlConnection.getInputStream();
                InputStreamReader reader= new InputStreamReader(in);
                int data = reader.read();

                while (data != -1)
                {
                    char current = (char)data;
                    result+= current;
                    data= reader.read();
                }
                return result;
            }
            catch (Exception e)
            {
                e.printStackTrace();
                return "failed";
            }

        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DownloadTask task= new DownloadTask();
        String result = null;
        try {
            result= task.execute("https://www.google.co.in//").get();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        Log.i("Contents of URL" ,result);
    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.newapp">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config" >
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

通过将最小值 api 更改为 28,我的问题得到了解决,因为你必须保持模拟器的 api 大于 28,这可以通过 AVD 管理器完成,然后转到文件>- 项目结构>- 模块。然后转到顶部的默认配置,将最小 SDK 版本更改为 28。(您也可以尝试在 Gradle 脚本(在屏幕左侧的应用程序下方)中更改它>- build.app(模块:app) 在那里你会找到 minSdkVersion,只需在那里进行更改。