получение исходного кода HTML с URL-адресом в приложении для Android - PullRequest
0 голосов
/ 15 июня 2011

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

W / System.err (14858): android.os.NetworkOnMainThreadException W / System.err (14858): в android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1077)

Похоже, что для android 3.0 платформа, на которой я пытаюсь разработать, не позволяет мне использовать сетевые ресурсы в основном методе. Я понимаю, что существуют такие методы, как запуск в фоновом режиме или использование асинхронного метода, который должен работать, но кто-нибудь может мне помочь? Я не слишком уверен, как это сделать. Я новичок в программировании. Заранее спасибо.

Ниже приведен мой текущий код для метода onclick:

    String htmlCode = ""; 

    try {
    URL url = new URL("http://www.google.com");
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

    String inputLine;

    while ((inputLine = in.readLine()) != null) {
        htmlCode += inputLine;
        Log.d(LOG_TAG, "html: " + inputLine);
    }

    in.close();
    } catch (Exception e) {
        e.printStackTrace();
        Log.d(LOG_TAG, "Error: " + e.getMessage());
        Log.d(LOG_TAG, "HTML CODE: " + htmlCode);
    }

1 Ответ

1 голос
/ 15 июня 2011

Вы можете использовать Runnable или Thread, но, вероятно, самый идиотский способ Android сделать это - использовать AsyncTask.

new AsyncTask<String, Void, String>(){
  @Override
  protected String doInBackground(String... urlStr){
    // do stuff on non-UI thread
    StringBuffer htmlCode = new StringBuffer();
    try{
      URL url = new URL(urlStr[0]);
      BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

      String inputLine;

      while ((inputLine = in.readLine()) != null) {
        htmlCode += inputLine;
        Log.d(LOG_TAG, "html: " + inputLine);
      }

      in.close();
    } catch (Exception e) {
        e.printStackTrace();
        Log.d(LOG_TAG, "Error: " + e.getMessage());
        Log.d(LOG_TAG, "HTML CODE: " + htmlCode);
    }
    return htmlCode.toString();
  }         

  @Override
  protected void onPostExecute(String htmlCode){
    // do stuff on UI thread with the html
    TextView out = (TextView) findViewById(R.id.out);
    out.setText(htmlCode);
  }
}.execute("http://www.google.com");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...