【发布时间】:2017-12-19 23:23:26
【问题描述】:
我想在一个应用程序中从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 对象,以便连接正常工作。但我现在只想通过单击一个简单的按钮来执行这个脚本。
非常感谢您抽出宝贵时间!
【问题讨论】:
-
您只是打开了一个连接,而不是向该 url 发出任何 get 或 post 请求。
-
我只想运行 php 文件,我想我忘了调用 'urlConnectionMsgStateReset.connect();' ?我现在要试试这个。
-
我做了 urlConnectionMsgStateReset.setRequestMethod("POST");
-
只有
connect不应该工作。服务器端 API 应该是 POST、GET、PUT 或 DELETE 请求。您需要了解如何使用 Volley 发出 GET/POST 请求。 -
哦,现在可以使用了
标签: php android mysql android-asynctask