AsyncTask ограничивает размер буферов? - PullRequest
0 голосов
/ 03 июля 2011

Я пытаюсь получить HTML-контент.Все работает в потоке AsyncTask.Это мой код:

    protected String doInBackground(String... params) {         
        InputStream content = null;
        try {
            HttpGet httpGet = new HttpGet(params[0]);
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = httpclient.execute(httpGet);                                        
            content = response.getEntity().getContent(); 
        } catch (Exception e) {

        }                       
        if (content == null) {
            return "Error";
        }
        BufferedReader in = new BufferedReader(new InputStreamReader(content));
        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        try {
            while (((line = in.readLine()) != null)) {
                Log.i("DEBUG", line);
                sb.append(line + NL);
            }
            Log.i("DEBUG2", sb.toString());
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();           
}  

Проблема в том, что я получаю только часть ответа.Первая отладка показывает, что цикл while видит весь контент, а вторая отладка, которая показывает информацию из StringBuffer, показывает только часть контента.Итак, есть ли ограничения для использования StringBuffer в AsyncTask?

Я пытался использовать EntitiyUtils, но получил ту же проблему:

return new String(EntityUtils.toString(entity));

Какие-нибудь решения, советы?

Заранее спасибо!

1 Ответ

0 голосов
/ 03 июля 2011

Попробуйте:

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

    HttpGet get = new HttpGet(params[0]);       
    HttpClient client = new DefaultHttpClient();
    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    try {
        HttpResponse response = client.execute(get);
        return responseHandler.handleResponse(response);           
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }       
    return null;
}

РЕДАКТИРОВАТЬ

Проблема была logcat.Он обрезал сообщения журнала (см. Комментарии)

...