2012-04-05 4 views
0

Привет, я собираюсь выполнить HTTP-запрос, чтобы добавить некоторые данные в локальную базу данных с помощью wampserver, поэтому я сделал кнопку, и внутри этой кнопки я сделаю это действие, но проблема в том, что я не могу подключиться к базе данных !!!android.os.networkonmainthreadexception Http Request

это сообщение появляется в окошке тоста "android.os.networkonmainthreadexception"

и это мой код --->http://pastebin.com/TsQ7NbNm

    ============================ 

Я Новее для Android Программирование так пожалуйста помогите !

ответ

1

Вы не можете сделать http-запрос в своем потоке пользовательского интерфейса. Рассмотрите возможность использования AsyncTask или другого метода вызова asynchronuos.

+0

, пожалуйста, дайте мне код, чтобы сделать, что я новичок в Android! –

+0

Если вы новичок в Android, вы должны сначала прочитать некоторые вещи. http://developer.android.com/reference/android/os/AsyncTask.html Я надеюсь, что это упростит вам. –

+0

пожалуйста, как обновить мой код, чтобы сделать это правильно с помощью AsyncTask? !!! –

0

Если вы хотите опубликовать данные на своем сервере, тогда вам необходимо хорошо спроектировать сервер для данных для отправки сообщений. недавняя конфигурация моего сервера, я отправляю данные, используя этот код и хорошо выполнив.

Button send = (Button) findViewById(R.id.send_sms);   
    send.setOnClickListener(this); 

public void onClick(View v) 
{ 
     switch (v.getId()) 
     { 

     case R.id.send_sms: 

       try { 
        HttpClient client = new DefaultHttpClient(); 
        String postURL = "http://10.0.2.2/folder/saver.php"; 
        HttpPost post = new HttpPost(postURL); 
         List<NameValuePair> params = new ArrayList<NameValuePair>(); 
         params.add(new BasicNameValuePair("cell", "+8801899999")); 
         params.add(new BasicNameValuePair("pin", "1234")); 
         params.add(new BasicNameValuePair("msg", "hi!")); 
         UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8); 
         post.setEntity(ent); 
         HttpResponse responsePOST = client.execute(post); 
         HttpEntity resEntity = responsePOST.getEntity(); 
         if (resEntity != null) { 
          showAlert(EntityUtils.toString(resEntity)); 
          //Log.i("RESPONSE",EntityUtils.toString(resEntity)); 
         } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 


      break; 


     } 
} 
+0

Я «пробовал ваш код без ошибок, но это не работает для меня, это мой код, как он выглядит -> http://pastebin.com/9NgekWqm –

+0

, и это saver.php: http://pastebin.com/ZJH42Wtr –

+0

где проблема, пожалуйста, помогите, я сделал это на iPhone очень просто, но с андроидом это выглядит сложнее :( –

1

Upto API-уровень 10, это нормально, чтобы сделать http-запрос в потоке пользовательского интерфейса. Но из API-11 любая задача, требующая много времени для завершения, должна выполняться в фоновом задании. Причиной этого является любая задача, которая занимает 5 секунд или больше в потоке пользовательского интерфейса, тогда ANR (приложение не отвечает), то есть принудительное закрытие происходит. Для этого мы создаем некоторый фоновый поток или просто используем AsyncTask.

0

вы можете попробовать этот путь. Если у вашего сервера есть пароль, то дайте его.

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("test"); 


$valeur1=$_REQUEST['valeur1']; 
$valeur2=$_REQUEST['valeur2']; 

$req=mysql_query("insert into testapp (valeur1,valeur2) values('$valeur1','$valeur2')"); 
if($req) 
echo "ok"; 
else 
echo "erreur"; 
; 
?>