java - Asynctask创建问题

标签 java android json android-asynctask

我的代码无法正常运行,我正在尝试构建新闻阅读器应用程序,并且处于第一阶段,URL的内容未下载
这是我的代码:

公共类MainActivity扩展了AppCompatActivity {

public class Reader extends AsyncTask<String,Void,String> {

    @Override
    protected String doInBackground(String... urls) {


        URL url;
        HttpURLConnection httpURLConnection;

        try{

            Log.i("Done","Doing..");
            url=new URL(urls[0]);
            httpURLConnection=(HttpURLConnection) url.openConnection();
            httpURLConnection.connect();
            InputStream inputStream=httpURLConnection.getInputStream();

            InputStreamReader inputStreamReader =new InputStreamReader(inputStream);

            int data=inputStreamReader.read();

            String res="";

            while(data!=-1) {

               char cur=(char)data;
               res+=cur;
                data=inputStreamReader.read();
            }

            return  res;

        }
        catch(Exception e){

            e.printStackTrace();
            Log.i("Error:","Incomplete");
              return "Failed..";
        }

    }


    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        Log.i("Website Html :",result);

    }
}


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

    Reader reader=new Reader();
    reader.execute("http://newsapi.org/v2/top-headlines?country=in&apiKey=b40bd04fbeb24e3e8d871f1ebdcf25fe");
}


}

我还获得了Internet许可,并已完成解决此问题的所有必要步骤,
提前致谢。

最佳答案

您正在将Activity与Asynctask混合在一起。

下面是经过更正的代码,可提供正确的结果。

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 {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        new Reader().execute("http://newsapi.org/v2/top-headlines?country=in&apiKey=b40bd04fbeb24e3e8d871f1ebdcf25fe");

    }

    public class Reader extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {

            URL url;
            HttpURLConnection httpURLConnection;

            try {

                Log.i("Done", "Doing..");
                url = new URL(urls[0]);
                httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.connect();
                InputStream inputStream = httpURLConnection.getInputStream();

                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

                int data = inputStreamReader.read();

                String res = "";

                while (data != -1) {

                    char cur = (char) data;
                    res += cur;
                    data = inputStreamReader.read();
                }
                Log.i("result:", res);
                return res;

            } catch (Exception e) {

                e.printStackTrace();
                Log.i("Error:", e.toString());
                return "Failed..";
            }
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            Log.i("Website Html :", result);
        }
    }
}

关于java - Asynctask创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61028759/

相关文章:

java - 参数与字段

android - 如何正确实现onDestroy方法?

java - 注意 : android. support.v4.app.NotificationCompat Jellybean 调用 'Field.getType'

android - 扩展基本 Activity 会使我的其他 Activity 无法使用

JsonFilter 抛出错误 "no FilterProvider configured for id"

java - 在编辑文本中查找\n android

java 使用JAXP读取xml根节点描述

java - 如何将 Mono<List<String>> 转换为 Flux<String>

java - Spring:为什么普通 Controller 和@ResponseBody Controller 生成不同的代码?

php - 将新数据添加到 PHP JSON 字符串中