首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Android应用程序中的按钮执行PHP脚本

使用Android应用程序中的按钮执行PHP脚本
EN

Stack Overflow用户
提问于 2016-02-21 02:23:52
回答 1查看 5.6K关注 0票数 2

我正在尝试做一个简单的应用程序与两个按钮,每个将执行我的数据库上的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中找不到任何错误,没有错误,什么都没有。有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35527241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档