Загрузка HTML-содержимого URL в Android Studio 3.5.1 - PullRequest
0 голосов
/ 14 октября 2019

Я хочу взять содержимое HTML-адреса моего приложения для чтения новостей. Я написал код, в котором я выполняю следующие шаги:

  1. Взять идентификаторы из API новостного сайта и взять 20 лучших из них, то есть 20 лучших новостей

  2. Загрузить содержимое HTML этих 20 URL-адресов, которое содержит данные JSON для заголовка и фактический URL-адрес новости

  3. Я хочу загрузить содержимое фактического URL-адреса новости и показать, что с помощью WebView в Android

Моя программа работает нормально до шага 2, и я выхожу как

I / JSON Items: 21248914

I /URL: https://hacker -news.firebaseio.com / v0 / item / 21248914.json? Print = pretty

I / Информация о статье: 21248914 Я перестал устанавливать финансовую цель для своего SaaShttps://blog.inkdrop.info/i-stopped-setting-a-financial-goal-for-my-saas-a92c3db65506

через Log.i

Я не могу загрузить фактическое содержимое URL.

package com.example.freshnews;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {


    static ArrayList<String> titles=new ArrayList<>();
    static ArrayList<String> articleHtml=new ArrayList<>();
    ArrayAdapter<String> arrayAdapter;
    ListView newsListView;
    String articleTitle,articleUrl;


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


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

            String result="",articleCode="";
            URL url;
            HttpURLConnection urlConnection=null;

            try {
                url = new URL(strings[0]);

                urlConnection=(HttpURLConnection) url.openConnection();
                InputStream inputStream = urlConnection.getInputStream();
                InputStreamReader reader=new InputStreamReader(inputStream);
                int data=reader.read();

                while(data != -1)
                {
                    char current=(char) data;
                    result += current;
                    data=reader.read();
                }

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            //Received article IDs

            String articleId;
            int articleCounter;

            String newsSourceURL;

            try {
                JSONArray jsonArray = new JSONArray(result);

                if(jsonArray.length()<20)
                {
                    articleCounter=jsonArray.length();
                }
                else
                {
                    articleCounter=20;
                }


                for(int i=0;i<articleCounter;i++)
                {
                    Log.i("JSON Items",jsonArray.getString(i));
                    articleCode="";

                    articleId=jsonArray.getString(i);
                    newsSourceURL="https://hacker-news.firebaseio.com/v0/item/" + articleId + ".json?print=pretty";
                    Log.i("URL",newsSourceURL);

                    url=new URL(newsSourceURL);
                    urlConnection=(HttpURLConnection) url.openConnection();
                    InputStream inputStream=urlConnection.getInputStream();
                    InputStreamReader reader=new InputStreamReader(inputStream);
                    int data=reader.read();

                    while(data!=-1)
                    {
                        char current=(char) data;
                        articleCode+=current;
                        data=reader.read();

                    }


                    JSONObject jsonObject=new JSONObject(articleCode);

                    articleTitle=jsonObject.getString("title");
                    articleUrl=jsonObject.getString("url");

                    Log.i("Article Information",articleId + "   " + articleTitle + "   " + articleUrl);

              /*      titles.add(articleTitle);
                    arrayAdapter.notifyDataSetChanged();*/

                    URL urlHtml=new URL(articleUrl);
                    HttpURLConnection urlConnectionHtml=(HttpURLConnection) urlHtml.openConnection();
                    InputStream inputStreamHtml=urlConnectionHtml.getInputStream();
                    InputStreamReader readerHtml=new InputStreamReader(inputStreamHtml);
                    int dataHtml=readerHtml.read();
                    articleCode="";

                    while(dataHtml!=-1)
                    {
                        char current=(char) dataHtml;
                        articleCode+=current;
                        data=reader.read();

                    }

                    Log.i("Article HTML",articleCode);

//                    articleHtml.add(articleCode);


                }
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


            return result;
        }
    }

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

        titles.clear();
        articleHtml.clear();

        newsListView=(ListView) findViewById(R.id.newsListView);
        arrayAdapter=new ArrayAdapter<>(getApplicationContext(),android.R.layout.simple_list_item_1,titles);
        newsListView.setAdapter(arrayAdapter);



        DownloadTask task=new DownloadTask();

        try {
            task.execute("https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty");
        }catch (Exception e)
        {
            e.printStackTrace();
        }

        newsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Intent intent=new Intent(getApplicationContext(),NewsActivity.class);
                intent.putExtra("news",position);
                startActivity(intent);


            }
        });

    }
}

Ниже приведены журналы

I / JSON Items: 21248914 I / URL: https://hacker -news.firebaseio.com / v0 / item / 21248914.json? Print = pretty I / Информация о статьеrmation: 21248914 Я перестал устанавливать финансовую цель для своего SaaS https://blog.inkdrop.info/i-stopped-setting-a-financial-goal-for-my-saas-a92c3db65506 I / art: фоновая частичная параллельная развертка меток GC освободил 2209 (6 МБ) объектов AllocSpace, 368 (6 МБ) объектов LOS, 30% свободных, 8 МБ / 12 МБ, пауза 2.328 мс всего 185.999 мс I / art: фоновая липкая параллельная развертка меток GC освобождено 924 (3 МБ) объектов AllocSpace, 152 (2 МБ) LOS-объектов, 56% свободных, 3 МБ / 7 МБ, приостановлено 1.856 мс всего 105.182 мс I / art:Фоновая развертка частичной одновременной пометки GC освобождена 1905 (7 МБ) объектов AllocSpace, 319 (7 МБ) объектов LOS, 40% свободной, 5 МБ / 8 МБ, приостановлено 2,487 мс всего 150,374 мс I / art: Фоновая частичная развертка одновременной отметки GC освобождена 800 (60 КБ)Объекты AllocSpace, 591 (11 МБ) объекты LOS, 39% свободного, 4 МБ / 7 МБ, приостановлено 1,556 мс всего 205,941 мс I / art: фоновая частичная одновременная развертка метки GC освобождена 770 (24 КБ) объектов AllocSpace, 575 (11 МБ) объектов LOS, 40% свободного, 3 МБ / 6 МБ, приостановлено 1,562 мс всего 123,366 мс I / art: фоновая частичная одновременная развертка меток GC освобождено 574 (17 КБ) объектов AllocSpace, 431 (8 МБ) объектов LOS, 39% свободных, 4 МБ / 7 МБ, пауза 2.020 мс всего 172.689 мс I / art: Фоновая частичная одновременная развертка меток GC освободил 547 (17 КБ) объектов AllocSpace, 408 (9 МБ) объектов LOS, 39% свободного, 6 МБ / 10 МБ, приостановлено 1.518 мс всего 210.102 мс I / art:Фоновая развертка частичной одновременной пометки GC освободила 428 (13 КБ) объектов AllocSpace, 321 (7 МБ) объектов LOS, 39% свободной, 4 МБ / 7 МБ, приостановлено 1,555 мс всего 129,243 мс I / art: Фоновая развертка частичной одновременной пометки GC освобождена 659 (20 КБ)Объекты AllocSpace, 492 (12 МБ) объектов LOS, 39% свободного, 3 МБ / 5 МБ, приостановлено 1.784 мс всего 133.335 мс I / art: фоновая частичная развертка одновременной пометки Освобождено GC 632 (19 КБ) объектов AllocSpace, 477 (12 МБ) объектов LOS, 39% свободного, 4 МБ / 7 МБ, приостановлено 1,559 мс всего 125,279 мс I / art: Фоновая частичная одновременная развертка меток GC освобождено 665 (20 КБ) объектов AllocSpace, 498 (12 МБ) объектов LOS, 35% свободных, 7 МБ / 11 МБ, приостановлено 1.663 мс175,877мс I / art: фоновая частичная одновременная развертка меток GC освободил 490 (15 КБ) объектов AllocSpace, 369 (9 МБ) объектов LOS, 39% свободных, 5 МБ / 9 МБ, приостановлено 1,564 мс всего 149,427 мс I / art: Bчастичная одновременная развертка меток GC освободила 586 (18 КБ) объектов AllocSpace, 435 (13 МБ) объектов LOS, 40% свободных, 5 МБ / 9 МБ, приостановлено 1.529 мс всего 130,228 мс I / art: фоновая частичная одновременная метка разверток GC освобождена 471 (14 КБ)Объекты AllocSpace, 349 (10 МБ) объектов LOS, 39% свободного, 3 МБ / 6 МБ, приостановлено 1,531 мс всего 103,827 мс I / art: фоновая частичная одновременная развертка метки GC освобождена 579 (18 КБ) объектов AllocSpace, 433 (13 МБ) объектов LOS, 39% free, 5 МБ / 9 МБ, приостановлено 1.597 мс всего 201.518 мс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...