0

私は最初のAndroidアプリを実行していますが、HTMLページのコードを取得する必要があります。

実際に私はこれをやっています:

    private class NetworkOperation extends AsyncTask<Void, Void, String > {
    protected String doInBackground(Void... params) {
        try {
            URL oracle = new URL("http://www.nationalleague.ch/NL/fr/");
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine;
            String s1 = "";
            while ((inputLine = in.readLine()) != null)
                s1 = s1 + inputLine;
            in.close();


            //return
            return s1;
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

しかし、問題は時間がかかりすぎることです。200行目から300行目までのHTMLを例に取るにはどうすればよいですか?

私の悪い英語でごめんなさい:$

4

3 に答える 3

0

を使用する代わりにreadLine()使用するのが最善のケースread(char[] cbuf, int off, int len)です。別の汚い方法

int i =0;
while(while ((inputLine = in.readLine()) != null)
i++;
if(i>200 || i<300 )
DO SOMETHING
in.close();)
于 2013-01-18T15:33:31.823 に答える
0

HTTP 経由で HTML ドキュメントを取得します。HTTP は通常、TCP に依存しています。だから... 「行をスキップする」ことはできません! サーバーは常に、関心のある部分より前のすべてのデータを送信しようとします。通信側は、そのようなデータの受信を確認する必要があります。

于 2013-01-18T15:30:51.537 に答える
0
  1. 行ごとに読まない [use read(char[] cbuf, int off, int len)]
  2. 文字列を連結しない [a を使用StringBuilder]

バッファリングされたリーダーを開きます(すでに行っているのと同じように):

    URL oracle = new URL("http://www.nationalleague.ch/NL/fr/");
    BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));

行ごとに読み取る代わりに、 a を読み取りchar[](約 8192 のサイズのものを使用します)、 a を使用してすべての読み取りsStringBuilderを追加します。char

HTML ページのソース コードの書式が変更される可能性があるため、HTML ソースの継ぎ目の特定の行を読み取るのは少し危険です。

于 2013-01-18T15:34:50.677 に答える