首页 > 解决方案 > Android Emulator 冻结,我没有获得该网站的 html 代码

问题描述

我只是在创建一个简单的 android 应用程序,它记录特定网站的 HTML 代码。在 onCreate 方法中,传递了一个字符串,它是我们想要的 HTML 代码的 URL。每当我运行该应用程序时,我都没有在日志中获得 HTML 代码,并且模拟器也冻结了。它仅适用于“https://www.zappycode.com/”的特定链接。如果通过任何其他链接,我会得到问题。编码:

package com.example.guesswho;
 
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
 
import androidx.appcompat.app.AppCompatActivity;
 
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class MainActivity extends AppCompatActivity {
 
    public class DownloadTask extends AsyncTask<String,Void, String>{
 
        @Override
        protected String doInBackground(String... urls) {
            String result=null;
            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.imdb.com/list/ls052283250/").get(); //DOES NOT WORK 
            //result= task.execute("https://en.wikipedia.org/wiki/ICC_Player_Rankings").get();//DOES NOT WORK 
 
            //result= task.execute("https://www.zappycode.com/").get(); //THIS WORKS PERFECTLY
 
        }catch(Exception e){
            e.printStackTrace();
        }
        Log.i("Result", result);
 
    }
}

当 imbd 或 Wikipedia 链接通过时记录。 点击此处查看 imbd 或 Wikipedia 链接传递时的 Log 图像

通过 imbd 或 Wikipedia 时的模拟器:(主页、切换应用程序和后退按钮不起作用,并且 helloWorld textView 不可见) 点击查看模拟器图片

为什么会发生这种情况,我该如何解决。提前致谢:)

标签: javaandroidweb-scraping

解决方案


将此行添加到您的 AndroidManifest.xml 文件中的应用程序标记下。

android:usesCleartextTraffic="true"

推荐阅读