0

こんにちは、wampserver を使用してローカル データベースにデータを追加する HTTP リクエストを実行しようとしているので、ボタンを作成し、そのボタン内でそのアクションを実行しますが、問題は接続できないことですデータベース!!!

これは、トーストに表示されるメッセージ「android.os.networkonmainthreadexception」です。

これが私のコードです ---> http://pastebin.com/TsQ7NbNm

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

私はAndroidプログラミングに慣れていないので、助けてください!

4

4 に答える 4

1

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

于 2012-04-05T11:20:27.753 に答える
1

APIレベル10までは、UIスレッドでhttpリクエストを行うのは問題ありません。ただし、API-11以降、完了するまでに長い時間がかかるタスクは、バックグラウンドタスクで実行する必要があります。この背後にある理由は、UIスレッドで5秒以上かかり、その後ANR(アプリケーションが応答しない)、つまり強制終了が発生するタスクです。これを行うには、バックグラウンドスレッドを作成するか、単にAsyncTaskを使用します。

于 2012-04-05T11:52:59.517 に答える
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;


       }
 }
于 2012-04-05T11:42:48.227 に答える
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";
;
?>
于 2012-04-05T14:04:24.807 に答える