2012-04-05 9 views
0

こんにちは、私は、wampserverを使ってローカルデータベースにデータを追加するためにHTTPリクエストを実行しようとしています。そのボタン内でボタンを作って、そのアクションを実行します。問題は私がデータベースに接続できないことです!私はプログラミングAndroidに新しいよ--->http://pastebin.com/TsQ7NbNmandroid.os.networkonmainthreadexception Http Request

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

これはメッセージでは、トースト"android.os.networkonmainthreadexception"

にapperas、これは私のコードです私を助けてください !

答えて

1

あなたのUIスレッドでhttpリクエストを行うことはできません。 AsyncTaskやその他の非同期呼び出しメソッドの使用を検討してください。

+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

APIレベル10まで、UIスレッドでhttpリクエストを行うことは問題ありません。しかし、API-11からは、完了までに長い時間を要するタスクは、バックグラウンドタスクで実行する必要があります。この背後にある理由は、UIスレッドで5秒以上かかるANR(Application Not Responding)すなわち強制終了が発生するすべてのタスクです。そのためには、バックグラウンドスレッドを作成するか、単純に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"; 
; 
?>