HttpPost变量和PHP错误
问题描述:
.PHP文件通过创建数据库连接并插入sql成功工作。 我唯一的结论,那就是在.java活动 的某个地方..是的,我已经在清单中设置了INTERNET PERMISSIONS。HttpPost变量和PHP错误
MY ERROR:01-03 21:56:05.784:W/System.err的(1398):android.os.NetworkOnMainThreadException
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//setContentView(R.layout.email);
try {
postInternetData();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void postInternetData() {
HttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.example.com/app/insert_tag.php");
try{
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("name", "android"));
post.setEntity(new UrlEncodedFormEntity (formparams));
HttpResponse response = httpclient.execute(post);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
<?php
// CREATE the connection
$connection = mysql_connect('XXXXXXXXXXX.db.godaddy.com','XXXXXXXXXXX','XXXXXXXXXXX');
if(!$connection) {
echo 'failure to connect host';
}
$mysql_select_db = mysql_select_db('XXXXXXXXXXX', $connection);
if(!$mysql_select_db) {
echo 'failure to select db';
}
$name = $_POST['name'];
$qry = "INSERT INTO httptest(id, name) VALUES ('', '" . $name . "');";
$result = mysql_query($qry, $connection);
IF (!$result){
echo 'failure to query db';
} else {
echo $result;
}
?>
后通过计算器的实施例和人文件故障排除小时,我折。 有什么突出的东西给你? 谢谢。
答
可能的是,在UI线程上启用了StrictMode。
尝试:
ThreadPolicy tp = ThreadPolicy.LAX;
StrictMode.setThreadPolicy(tp);
以上不推荐的做法,虽然,我认为你需要使用一个AsyncTask。
答
和其他人一样,Android不再允许UI线程上的任何网络活动。即使他们这样做了,也不能这样做,因为在网络活动期间,UI将无响应,从而导致糟糕的用户体验。
你需要使用什么是ASyncTask
这是你将如何调用ASyncTask
new MyAsyncTask().execute();
这是你如何设置它
private final class MyAsyncTask extends AsyncTask<Void,Void,Void>
{
private ProgressDialog progressdialog;
protected String doInBackground(Void... params)
{
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet("http://example.com/getinfo"));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK)
{
//successful response
}
else
{
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
}
catch(Exception e)
{
ProgressDialog.show(HelloWorldActivity.this,"","Failed",true);
}
}
protected void onPostExecute(String result)
{
if (progressdialog.isShowing())
progressdialog.dismiss();
Toast.makeText(HelloWorldActivity.this,"Completed",Toast.LENGTH_SHORT).show();
}
protected void onPreExecute()
{
progressdialog = ProgressDialog.show(HelloWorldActivity.this,"","Working...",true);
}
}
什么是“无法互动与发布的变量“是什么意思?我们在这里看什么? PHP脚本在哪里? – deceze 2012-01-04 02:50:34
我会发布php的内容。 – wurde 2012-01-04 02:55:55
@Peceiver请通过编辑您的原始文章,而不是在评论中发布PHP。 – 2012-01-04 02:57:20