【问题标题】:Android Asynctask update query to remote mysql serverAndroid Asynctask 更新查询到远程 mysql 服务器
【发布时间】: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


【解决方案1】:
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 脚本就会运行。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多