您好我即将执行HTTP请求,使用wampserver将一些数据添加到本地数据库,因此我在该按钮内创建了一个按钮,我将执行该操作,但问题是我无法连接到数据库!
这是吐司上的消息上传" android.os.networkonmainthreadexception"
这是我的代码---> http://pastebin.com/TsQ7NbNm
============================
我是Android编程的新手,所以请帮助我!
答案 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";
;
?>