1

関連するデータを取得して使用できるように、静的なブログ ページから html をダウンロードしたいと考えています。非同期手順には、robospice ライブラリを使用しています。

問題は、SimpleTextRequest を使用して、html の最初の行のみを取得することです。

<?xml version="1.0" encoding="UTF-8"?>

HTMLソース全体をダウンロードするには、どのリクエストを使用すればよいですか? サンプルで同様のものを見つけることができませんでした。そして、「robospice」をグーグルで検索すると、ほとんどがソースコードにつながりますが、このライブラリのチュートリアルに関してはほとんどないようです。

更新: 最初の回答に触発されて、このカスタム spicerequest を作成しました。

 public class HtmlRequest extends SpiceRequest<String> {

    private static String reqUrl;

    public HtmlRequest(String url) {
        super(String.class);
        reqUrl = url;
        aLog.d("HtmlRequest.HtmlRequest url : " + url);
    }

    @Override
    public String loadDataFromNetwork() throws Exception {
        String html = "";

        HttpClient httpClient = new DefaultHttpClient();
        StringBuilder builder = new StringBuilder();
        HttpGet get = new HttpGet(reqUrl);
        HttpResponse response = httpClient.execute(get);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        aLog.d("HtmlRequest.loadDataFromNetwork statusCode : " + statusCode);
        if (statusCode == 200) {
            /*
             * Si todo fue ok, montamos la String con el HTML
             */
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                aLog.d("HtmlRequest.loadDataFromNetwork line : " + line);
                builder.append(line);
            }
            html = builder.toString();
            aLog.d("HtmlRequest.loadDataFromNetwork html : " + html);
        }

        httpClient.getConnectionManager().shutdown();
        return html;
    }

}

次に、私のアクティビティで私は持っています

spiceManager.execute(htmlRequest, "text", DurationInMillis.NEVER, new StaticItemRequestListener());

それでも、コンストラクター メソッドのログ以外に、カスタム リクエストで設定したログは取得されません。

問題は、htmlRequest が実行されていないように見えても、上記の xml ヘッダーをまだ取得していることです。私は何か間違ったことをしているに違いないのに、それを見ることができない...

4

1 に答える 1

2

html ではなく xml ファイルのヘッダーを取得しているのは奇妙です。サーバーにhtmlバージョンを尋ねてみてください:

public class ExampleRequest extends SpiceRequest<String> {

    public ExampleRequest() {
        super(String.class);
    }

    @Override
    public String loadDataFromNetwork() throws Exception {

        String url = "your website url";

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
            System.setProperty("http.keepAlive", "false");
        }

        HttpURLConnection urlConnection = (HttpURLConnection) new URL(url)
            .openConnection();
        urlConnection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");       
        urlConnection.setRequestProperty("Content-Type", "text/html");            
        String result = IOUtils.toString(urlConnection.getInputStream());
        urlConnection.disconnect();

        return result;
    }
}
于 2013-05-15T13:17:50.870 に答える