2013-09-08 4 views
-1

Я hitesh моя проблема в том, что я работаю на httpclient в andriod, я дал интернет-разрешение моему приложению, и я запускаю свое приложение и нажимаю кнопку, которую, к сожалению, остановил tehy. пожалуйста, помогите мне, что мой кодAndroid httpClient

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final EditText user=(EditText) findViewById(R.id.username); 
    final EditText pass=(EditText) findViewById(R.id.password); 
    Button login=(Button) findViewhere`ById(R.id.login); 
    login.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 
      String u=user.getText().toString(); 
      String p=pass.getText().toString(); 
      HttpClient httpClient=new DefaultHttpClient(); 
      HttpPost httppost=new HttpPost("http://202.164.53.122"); 
      BasicNameValuePair usernameBaseNameValuePair=new BasicNameValuePair("id",u); 
      BasicNameValuePair passBaseNameValuePair=new BasicNameValuePair("pass",p); 
      List<NameValuePair> nameValuePairList=new ArrayList<NameValuePair>(); 
      nameValuePairList.add(usernameBaseNameValuePair); 
      nameValuePairList.add(passBaseNameValuePair); 
      try { 
       UrlEncodedFormEntity urlEncodedFormEntity=new 
       UrlEncodedFormEntity(nameValuePairList,HTTP.UTF_8); 
       httppost.setEntity(urlEncodedFormEntity); 
       try { 
        HttpResponse httpResponse=httpClient.execute(httppost); 
       } catch (ClientProtocolException e) { 
       } catch (IOException e) { 
       user.setText(e.getMessage()); 
       } 

      }catch(UnsupportedEncodingException uee){ 
      } 
     } 
    }); 
} 

@Override 

public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
+1

Правильно отформатируйте свой код и предоставите вывод logcat, включающий исключение stacktrace. –

+0

Вы не должны этого делать - '} catch (UnsupportedEncodingException uee) {', так как если вы получите исключение, вы не узнаете об этом и не сделаете ничего, чтобы его разрешить. } – Simon

+0

Три очка: 1) форматирование; StackOverflow использует вкладки из 4 столбцов, поэтому имейте это в виду. Возможно, вам лучше сменить вкладки на пробелы. б) Я согласен с @Simon; вы должны, по крайней мере, печатать сообщение об ошибке и, возможно, трассировку стека в предложении 'try'. И, прежде всего, iii) покажите нам logcat, выводимый из ошибки. –

ответ

0

Dont работайте с сетью по основному потоку (или получите android.os.NetworkOnMainThreadException). используйте thread class или AsyncTask class.
AsyncTask
Thread

0

Если вы используете этот код в Android 4.0+ вы получите исключение android.os.NetworkOnMainThreadException. Используйте AsyncTask, чтобы предоставить любое сообщение http.

0

Во-первых, создайте отдельный класс для получения запроса и используйте Asynctask для выполнения всех ваших действий. Используйте String для передачи URI, а затем передайте URI в Asynctask. Этот метод не будет блокировать основной поток пользовательского интерфейса.
См. Эту ссылку для использования Asynctask. http://developer.android.com/reference/android/os/AsyncTask.html

0

Для работы в сети, вы должны использовать другой поток, а не использовать основной поток, потому что использование сети в основном потоке приведет к применению интерфейсу зависания, чтобы избежать этого, вы должны AyncTask Для Примера AsyncTask использовать этот Link

0

Прежде всего, вы должны использовать другой поток для отправки запроса. Или лучший способ - использовать запросы волейбола с методом post. Это быстрее и эффективнее.