2015-11-09 6 views
-2

enter image description here Я пытался часами отправлять запрос POST на php, который отправляет ответ json. Но эта одна строка кода давала мне проблемы, и я не могу двигаться вперед. Я так расстроен. Я просмотрел бесчисленные примеры других, используя ту же линию! но по какой-то причине это не сработает для меня! это мой фрагмент кода для моих doinBackgrounds:response = httpClient.execute (request) продолжает давать NetworkOnMainThreadException

protected Void doInBackground(Void... voids) { 
    HttpClient httpClient=new DefaultHttpClient(); 
    HttpGet request=new HttpGet(); 
    BufferedReader in=null; 
    String data=null; 
    HttpResponse response = null; 
    try { 
     URI website=new URI("login.php"); 
     request.setURI(website); 
    } catch (URISyntaxException e) { 
     e.printStackTrace(); 
    } 

    HttpPost httpPost=new HttpPost("login.php"); 
    List<NameValuePair> nameValuePairs=new ArrayList<NameValuePair>(2); 
    nameValuePairs.add(new BasicNameValuePair("name", name)); 
    nameValuePairs.add(new BasicNameValuePair("password", pwd)); 
    try { 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
    try { 
     response=httpClient.execute(request); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     in=new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     String line=in.readLine(); 
     System.out.println(line); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    if (Utility.isNotNull(name) && Utility.isNotNull(pwd)) { 
     RequestParams params = new RequestParams(); 
     if (Utility.validate(name, pwd)) { 
      params.put("username", name); 
      params.put("password", pwd); 
      bloggedIn=true; 
      onPostExecute(); 
     } else { 
      loginActivity.InvalidToast(); 
     } 
    } else { 
     loginActivity.EmptyToast(); 
    } 
    return null; 
} 
+0

Пожалуйста, пост весь трассировки стека вашего 'NetworkOnMainThreadException'. – CommonsWare

+0

@CommonsWare Я отредактировал вопрос – Aria

ответ

0

Вы вызываете doInBackground() себя. Это не то, как вы используете AsyncTask. Чтобы выполнить AsyncTask, создайте экземпляр и позвоните по номеру execute() или executeOnExecutor(). Это приведет к запуску doInBackground() в фоновом потоке.

Вы можете узнать больше о AsyncTask в the JavaDocs.

(кстати, в будущем, пожалуйста, напишите трассировки стека в виде текста, скопированного из LogCat, а не скриншоты)

+0

спасибо, это сработало для меня – Aria