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