我想从应用程序中的 AsyncTask
运行一个简单查询,告诉远程 MYSQL 数据库将一些值设置为 1 到 0。
这是一个名为 resetSentValues.php
的 php 脚本,当我在浏览器中访问该文件时,数据库中的值会发生变化。所以我可以说该脚本有效。
我想要的是,我可以单击一个按钮,数据库中的所有值都会被重置(使用工作脚本)。我尝试使用一个简单的 AsyncTask
如下:
public class MessageSentResetter extends AsyncTask<Void, String, String> {
private URL urlMsgtSateResetScript;
HttpURLConnection urlConnectionMsgStateReset = null;
@Override
protected void onPreExecute() {
try {
urlMsgtSateResetScript = new URL("http://freerunnl.nl/smsSender/webservice/resetSentValues.php");
System.out.println("message sent resetter on pre execute tried");
} catch (MalformedURLException e) {
e.printStackTrace();
}
super.onPreExecute();
}
@Override
protected String doInBackground(Void... voids) {
try {
urlConnectionMsgStateReset = (HttpURLConnection) urlMsgtSateResetScript.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
System.out.println("Onpostexecute is reached, now disconnect the httpurlconnection");
urlConnectionMsgStateReset.disconnect();
super.onPostExecute(s);
}
}
我这样调用它:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void sendSMS() {
MessageSentResetter resetter = new MessageSentResetter();
resetter.execute();
Toast.makeText(MainActivity.this, "The message sent values are reset", Toast.LENGTH_LONG).show();
}
点击事件的实例化如下:
btnSendSMS.setOnClickListener(new OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void onClick(View view) {
sendSMS();
}
});
有什么建议吗?我已经对其进行了类似的设置,以便我可以从数据库中选择和解析 JSON 对象,以便连接正常工作。但我现在只想通过单击一个简单的按钮来执行此脚本。
非常感谢您抽出宝贵的时间!
最佳答案
public class MessageSentResetter extends AsyncTask<Void, String, String> {
private URL urlMsgtSateResetScript;
//HttpURLConnection urlConnectionMsgStateReset = null;
HttpURLConnection urlConnectionMsgStateReset;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Void... voids) {
try {
urlMsgtSateResetScript = new URL("http://freerunnl.nl/smsSender/webservice/resetValues.php");
} catch (MalformedURLException e) {
e.printStackTrace();
return "exception";
}
try {
urlConnectionMsgStateReset = (HttpURLConnection) urlMsgtSateResetScript.openConnection();
urlConnectionMsgStateReset.setReadTimeout(15000);
urlConnectionMsgStateReset.setRequestMethod("POST");
urlConnectionMsgStateReset.setDoInput(true);
urlConnectionMsgStateReset.setDoOutput(true);
urlConnectionMsgStateReset.connect();
} catch (IOException e) {
e.printStackTrace();
}
try {
int response_code = urlConnectionMsgStateReset.getResponseCode();
System.out.println("The response code for the resetter is");
System.out.println(response_code);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
System.out.println("Onpostexecute is reached, now disconnect the httpurlconnection");
urlConnectionMsgStateReset.disconnect();
super.onPostExecute(s);
}
}
它现在可以工作了,当我点击一个按钮时,我的服务器上的 php 脚本就会运行。
关于php - Android Asynctask更新查询远程mysql服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110078/