android.os.networkonmainthreadexception Http请求

android.os.networkonmainthreadexception Http请求,android,xmlhttprequest,Android,Xmlhttprequest,您好,我要执行一个HTTP请求,使用wampserver向本地数据库添加一些数据,所以我在该按钮中创建了一个按钮,H将执行该操作,但问题是我无法连接到数据库 这是toast上出现的消息“android.os.networkonmainthreadexception” 这是我的代码--> 我是Android编程新手,所以请帮帮我 您不能在UI线程上发出http请求。考虑使用异步任务或其他异步调用的方法。 < P>如果您想在服务器上发布数据,那么您需要很好地设计服务器来发布POST数据。最近我的服务

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

这是toast上出现的消息“android.os.networkonmainthreadexception”

这是我的代码-->


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

您不能在UI线程上发出http请求。考虑使用异步任务或其他异步调用的方法。

< P>如果您想在服务器上发布数据,那么您需要很好地设计服务器来发布POST数据。最近我的服务器配置我使用此代码发布数据,并且执行良好

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;


       }
 }
Button send=(Button)findviewbyd(R.id.send\u sms);
send.setOnClickListener(this);
公共void onClick(视图v)
{
开关(v.getId())
{
案例R.id.send_短信:
试一试{
HttpClient=new DefaultHttpClient();
字符串姿势=”http://10.0.2.2/folder/saver.php";
HttpPost=新的HttpPost(postrl);
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“单元格”,“+8801899999”);
参数添加(新的BasicNameValuePair(“pin”,“1234”);
添加(新的BasicNameValuePair(“msg”,“hi!”);
UrlEncodedFormEntity ent=新的UrlEncodedFormEntity(params,HTTP.UTF_8);
邮政实体(ent);
HttpResponse responsePOST=client.execute(post);
HttpEntity当前状态=responsePOST.getEntity();
if(最近性!=null){
showAlert(EntityUtils.toString(Recentity));
//Log.i(“响应”,EntityUtils.toString(resEntity));
}
}捕获(例外e){
e、 printStackTrace();
}
打破
}
}

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

您可以尝试这种方式。如果您的服务器有密码,请给出密码

<?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";
;
?>

如果你是Android新手,你应该先读一些东西。我希望这会让你更清楚。我尝试过你的代码没有错误,但对我来说不起作用这是我的代码外观-->问题出在哪里,请帮助我我在iPhone上做的很简单,但在android上似乎更难:(
<?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";
;
?>