-2

Пытаюсь читать веб-страницы как строки этого мой код:Чтение веб-страницы в виде строки, но ошибка

public class ReadWebPage extends Activity { 
private EditText url_text; 
private TextView textView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    url_text = (EditText) findViewById(R.id.address); 
    textView = (TextView) findViewById(R.id.tv); 
} 
public void myButtonClickHandler(View view) { 
    switch (view.getId()) { 
    case R.id.ReadWebPage: 
     try { 
      if (!url_text.getText().toString().trim().equalsIgnoreCase("")) { 
       textView.setText(""); 
       HttpClient client = new DefaultHttpClient(); 
       HttpGet request = new HttpGet(url_text.getText().toString()); 
       // Get the response 
       ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
       String response_str = client.execute(request, 
         responseHandler); 
       textView.setText(response_str); 
      } else { 
       Toast.makeText(getApplicationContext(), 
         "URL String empty.", Toast.LENGTH_LONG).show(); 
      } 
     } catch (Exception e) { 
      System.out.println("Some error occured."); 
      textView.setText(e.getMessage()); 
     } 
     break; 
    } 
} 
    } 

Как выше я показать свой код, используя этот код и пытается прочитать некоторые веб-страницы, как String, но это показывая эту ошибку.

03-03 22:37:45.088: I/System.out(1233): Some error occured. 
    03-03 22:37:45.088: W/System.err(1233): android.os.NetworkOnMainThreadException 
    03-03 22:37:45.138: W/System.err(1233): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
-03 22:37:45.148: W/System.err(1233): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
    03-03 22:37:45.158: W/System.err(1233): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
+0

Paste LogCat и улучшить свой вопрос с точным и к информации точки. –

+0

Я уже вставил это @codingcrow –

ответ

0

В Android говорится, что вы не должны выполнять сетевые операции с потоком пользовательского интерфейса. Он не хочет, чтобы вы блокировали поток и не без оснований.

Попробуйте вместо этого использовать AsyncTask. Поместите свой код запроса HTTP в метод doInBackground() и обновите TextView в методе onPostExecute(). Вы НЕ МОЖЕТЕ получить доступ к потоку пользовательского интерфейса из метода doInBackground().

Вот очень простой пример:

class MyAsyncTask extends AsyncTask<String, String, String> 
{ 
    private TextView textView; 

    public MyAsyncTask(TextView textView) 
    { 
     this.textView = textView; 
    } 

    protected Long doInBackground(String... params) 
    { 
     String url = params[0]; 
     // your HTTP request code goes here 
     return response; 
    } 

    protected void onPostExecute(String result) 
    { 
     textView.setText(result); 
    } 
} 

Используйте класс следующим образом:

new MyAsyncTask(myTextView).execute(myUrl); 
+0

, пожалуйста, дайте мне пример этого, так как я новичок в разработке Android @Tyler M. –

+0

@RajatTrivedi Google это ТАК, полно решений для ваших проблем. –

+0

спасибо, приятель ... @Tyler M. –

 Смежные вопросы

  • Нет связанных вопросов^_^