使用来自资源 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: true
和
java.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,只需在那里进行更改。
我正在尝试这段代码,它应该在 Logcat 中显示某些网站的 html 代码。
但我只是得到
Using Network Security Config from resource network_security_config debugBuild: true
和
java.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,只需在那里进行更改。