【问题标题】:Call PHP function from android?从android调用PHP函数?
【发布时间】:2014-06-11 01:06:46
【问题描述】:

我想从 Android 应用程序调用服务器上的特定 php 函数并发送一些参数。到目前为止,我已经实现了可以使用 HttpClient 打开 php 文件并将数据传输到 Json 并在我的应用程序中显示出来。所以,现在我希望能够调用特定的函数并向它发送参数,我该怎么做呢? 谢谢。

【问题讨论】:

    标签: java android


    【解决方案1】:

    这是我为使用 JSON 注册新用户名而编写的一段代码:

        public static boolean register(Context myContext, String name, String pwd) {
    
                byte[] data;
                HttpPost httppost;
                StringBuffer buffer;
                HttpResponse response;
                HttpClient httpclient;
                InputStream inputStream;
                List<NameValuePair> nameValuePairs;
    
                try {
                        httpclient = new DefaultHttpClient();
                        httppost = new HttpPost(
                                        "http://X.X.X.X/register.php");
                        // Add your data
                        nameValuePairs = new ArrayList<NameValuePair>(2);
                        nameValuePairs.add(new BasicNameValuePair("User", name.trim()));
                        nameValuePairs.add(new BasicNameValuePair("Password", pwd.trim()));
                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
                        // Execute HTTP Post Request
                        response = httpclient.execute(httppost);
                        inputStream = response.getEntity().getContent();
    
                        data = new byte[256];
    
                        buffer = new StringBuffer();
                        int len = 0;
                        while (-1 != (len = inputStream.read(data))) {
                                buffer.append(new String(data, 0, len));
                        }
    
                        inputStream.close();
                }
    
                catch (Exception e) {
                        Toast.makeText(myContext, "error" + e.toString(), Toast.LENGTH_LONG)
                                        .show();
                        return false;
                }
    
    
                if (buffer.charAt(0) == 'Y') {
    
                        return true;
                } else {
    
                        return false;
                }
    
        }
    

    如果你注意到:

                nameValuePairs = new ArrayList<NameValuePair>(2);
                        nameValuePairs.add(new BasicNameValuePair("User", name.trim()));
                        nameValuePairs.add(new BasicNameValuePair("Password", pwd.trim()));
                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    

    在那个片段中你可以发送参数。

    该方法只是将用户和密码发送到 register.php。 如果 User 已经被占用,则返回“N”;否则创建用户并返回“Y”。

    在服务器端,您将它们视为 POST 信息,因此:

     $user = $_POST['User'];
    

    它应该适合你的情况:)

    干杯!

    【讨论】:

    • 让我知道是否还需要 php ;)
    • 非常感谢!再问一个问题,我可以调用例如 php 函数“function getSettings($value)”,它会向 Android 发送一些东西吗?因为我想在同一个 php 文件中使用几个函数,并在需要时单独调用它们。有这个命令吗?再次感谢您。
    • 如果你看到那里,它已经返回了一些东西('Y'或'N')。因此,如果它是简单的字符,字符串等。您可以读取缓冲区并“构建”响应并相应地使用它。否则你需要做一些额外的事情:检查我的这个问题,它会有所帮助;)stackoverflow.com/questions/10186266/…
    • @N3sh 我需要为此导入哪些包?
    【解决方案2】:

    将这些特定的 php 函数与您所需的参数一起呈现或包装在一个网络服务中,并调用该网络服务,包括来自您的 android 的输入参数以完成工作。

    【讨论】:

    • 你的意思是这样的 $sql=mysql_query("INSERT INTO CITY (CITY_NAME)VALUES('".$_REQUEST['c_name']."')");
    • 是否要求将整个查询作为参数发送?如果是,那就错了。您应该在 Web 服务中包含查询部分。并且仅将城市名称作为参数从电话发送到网络服务
    【解决方案3】:

    您需要使用 WebServices 来完成这项工作。 http://www.php.net/manual/en/book.soap.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-19
      • 2021-08-22
      • 2020-03-16
      • 2011-04-02
      • 2011-09-06
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多