从资源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管理器完成),然后转到“文件”>“项目结构”>“模块”。然后转到顶部的“默认配置”,将Min SDK版本更改为28。(您也可以尝试在Gradle脚本(在屏幕左侧的应用程序下方)中将其更改:>-build.app(Module:app)找到minSdkVersion,只需在此处进行更改即可。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...