скачать HTML источник Android? - PullRequest
4 голосов
/ 18 июня 2010

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

 public void getHtml() throws ClientProtocolException, IOException
{
    HttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();
    HttpGet httpGet = new HttpGet("http://www.spartanjava.com");
    HttpResponse response = httpClient.execute(httpGet, localContext);
    String result = "";

    BufferedReader reader = new BufferedReader(
        new InputStreamReader(
          response.getEntity().getContent()
        )
      );

    String line = null;
    while ((line = reader.readLine()) != null){
      result += line + "\n";
      Toast.makeText(activity.this, line.toString(), Toast.LENGTH_LONG).show();

    }

}

почему это не такработать и бросить IOException?

1 Ответ

2 голосов
/ 18 июня 2010

Я думаю, что вам, вероятно, не хватает разрешения ИНТЕРНЕТ в вашем manifest.xml Обратите внимание на тег <uses-permission>, представленный в приведенном ниже коде.Я проверил ваш код в Eclipse, и он работает.

Кстати, я думаю, что использование String result таким образом не будет работать.Не проверять это далеко, хотя.Но я думаю, что вы не можете просто добавить строку в строку.Вам нужно использовать stringBuilder и добавлять новые строки.

РЕДАКТИРОВАТЬ: протестировал этот метод String result, и он работает.Возможно, проблема в том, что вы пытаетесь бросить столько тостов одновременно.Ваш код бросает тост за каждую строку восстановленного HTML-кода.Я установил для вашего метода getHtml() тип String и вернул result, и он вернул его должным образом ... Я не могу думать ни о какой другой причине исключения, кроме отсутствия разрешения INTERNET в вашем AndroidManifest.xml ....

Ура!

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="test.test.test"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
    <activity android:name=".test"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

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