我正在尝试做一个简单的应用程序与两个按钮,每个将执行我的数据库上的PHP脚本,在本地主机上。到目前为止,我已经让php脚本正常工作了(在浏览器中进行了测试):
<?php
require 'Connect.php'; // connects to DB
$query = "UPDATE tracker_database
SET tracker_logged_in = '1'
WHERE tracker_username = 'tracker01'";
if(mysqli_query($conn, $query))
{
echo'Success';
} else {
echo'not executed';
}
?>
这里有应用程序的OnClickListener
public void addListenerOnExeBtn() {
btn_exe = (Button) findViewById(R.id.btn_exe);
btn_exe.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
String link = "http://10.0.3.2/path/to/my/script.php"; //using this IP for Genymotion emulator
new updateData().execute(link);
Toast.makeText(MainActivity.this, "Executed", Toast.LENGTH_LONG).show();
}
}
);
}
据我所知,您需要使用AsyncTask来访问脚本
private class updateData extends AsyncTask <String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.connect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
所以我的问题是,当我运行我的应用程序并单击btn_exe时,它会打印出Toast "Executed“,但当我刷新数据库时,没有任何更改,是的,我将
<uses-permission android:name="android.permission.INTERNET"/>
在我的AndroidManifest.xml里。我在logcat中找不到任何错误,没有错误,什么都没有。有谁有什么想法吗?
发布于 2016-02-23 21:12:08
好了,我设法解决了这个问题,它是在updateData方法中的,如果有人有同样的问题,这里是修复的版本:
public class updateData extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
HttpURLConnection conn = null;
try {
URL url;
url = new URL(params[0]);
conn = (HttpURLConnection) url.openConnection();
if( conn.getResponseCode() == HttpURLConnection.HTTP_OK ){
InputStream is = conn.getInputStream();
}else{
InputStream err = conn.getErrorStream();
}
return "Done";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(conn != null) {
conn.disconnect();
}
}
return null;
}
https://stackoverflow.com/questions/35527241
复制相似问题