android.os.networkonmainthreadexception Http请求

时间:2012-04-05 11:15:00

标签: android xmlhttprequest

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

这是吐司上的消息上传" android.os.networkonmainthreadexception"

这是我的代码---> http://pastebin.com/TsQ7NbNm

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

我是Android编程的新手,所以请帮助我!

4 个答案:

答案 0 :(得分:1)

您无法在UI线程上发出http请求。考虑使用AsyncTask或其他一些异步调用方法。

答案 1 :(得分:1)

直到API级别-10,可以在UI线程上发出http请求。但是从API-11开始,任何需要很长时间才能完成的任务都必须在后台任务上完成。这背后的原因是任何在UI线程上花费5秒或更长时间然后ANR(应用程序无响应)的任务,即强制关闭发生。为此,我们创建了一些后台线程或简单地使用AsyncTask。

答案 2 :(得分: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;


       }
 }

答案 3 :(得分: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";
;
?>