Asynctask产生问题

问题描述 投票:0回答:1

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

enter code here

公共类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许可,并已完成了解决此问题的所有必要步骤,在此先感谢。

java android json android-asynctask
1个回答
0
投票

您正在将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);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.