0

嗨,我即将执行 HTTP 请求以使用 wampserver 将一些数据添加到本地数据库,所以我在该按钮中创建了一个按钮,我将执行该操作,但问题是我无法连接到数据库!!!

这是吐司“android.os.networkonmainthreadexception”上的消息apperas

这是我的代码---> 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 回答