php的web服务与android

时间:2012-04-09 07:22:22

标签: php android web-services

我是PHP编程的新手并且对此知之甚少,但我想用它来为我的客户端Android应用程序提供Web服务......

我开始使用PHP制作我的第一个Web服务并且它工作正常,但我想知道如何制作一个包含我需要的所有功能和方法以及如何从Android调用它的文件

谢谢

这是functions.php

    <?php
   function GetAllRest()
    {
    mysql_connect("localhost","root","root");
    mysql_select_db("myhoteldb");
     $sql=mysql_query("SELECT rest_id ,rest_name,cuisine,no_tables,bg_img,rest_logo      FROM  restaurant");
  while($row=mysql_fetch_assoc($sql))
  $output[]=$row;
  print(json_encode($output));
  mysql_close();
}
function GetAllCategory($lang_id,$rest_id)
{
    mysql_connect("localhost","root","root");
    mysql_select_db("myhoteldb");
    $sql=mysql_query("SELECT cat_lang.rowid ,cat_lang.cat_id as _id,lang_id,   cat_name,cat_description from cat_lang  ,menu_category WHERE lang_id= $lang_id  AND  restaurant= $rest_id ");

      while($row=mysql_fetch_assoc($sql))
     $output[]=$row;
     print(json_encode($output));
      mysql_close();

  }



   ?>

和网址      http://localhost/mywebservices.php?op=GetAllCategory&lang_id=1&rest_id=1

我现在收到此错误

   Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in      

第22行的C:\ xampp \ htdocs \ functions.php

   Notice: Undefined variable: output in C:\xampp\htdocs\functions.php on line 24
    null

2 个答案:

答案 0 :(得分:1)

作为一个想法,我建议在您的网址中包含所需的功能名称。 然后,获取该函数名称和参数,将它们传递给php的

call_user_func_array()

功能

这是函数处理程序的一个非常基本的概念:

您的请求网址如下所示:

http://www.mysite.com/webservice.php?op=CallFunctionOne&param_a=test&param_b=test2

以下是将调用路由到函数的处理程序:

require_once("./functions.php");

if(!empty($_SERVER["QUERY_STRING"])){
    $query_str = stripslashes($_SERVER['QUERY_STRING']);
    parse_str($query_str,$args);
    $op = array_shift($args);
    if(is_callable ($op)){
        call_user_func_array($op,$args);
    }
    else{
        echo "Handler error.<br />";
        echo $op . " function is not callable.";
    }
}

并且functions.php文件将包含您的功能。 希望它会给出一些想法。

答案 1 :(得分:1)

如果您了解PHP,那么我假设您将了解HTML。

PhoneGap允许您使用HTML,Javascript和CSS在andriod上运行应用程序。 http://phonegap.com/start

使用Javascript,您可以向您的网络php文件发出页面请求。

这是一个jQuery示例

<script>
$.ajax({
  url: 'http://example.com/myfile.php',
  dataType: 'json',
  success: function(data) {
    alert(data.rest_name); // do whatever you want with the json response
  }
});
</script>

要启用跨域,您需要将其添加到php文件头中(不确定应用程序是否需要跨域验证)

header('Access-Control-Allow-Origin: *');