6

我正在制作一个位置应用程序,用户可以在其中参数一些来自服务器的功能,所以我希望服务器开始与用户的电话进行通信。但首先,我想从 php.ini 打开与 android 的通信。

有没有办法从 php 服务器与 android 手机通信?

我已经使用了从 android 与 HTTP 到服务器的通信,返回值为JSONObject,但我找不到任何用于 php 调用 android 的东西。

我认为它就像可以让您的手机响铃的应用程序。

4

5 回答 5

1

GET 方法

您需要让 Android 客户端连接到您的服务器并传递您的 JSON 消息。如果客户端需要从服务器获取一些数据并断开连接,那么您可以使用普通的 HTTP 类型 GET。

WebSocket 方法

但是,如果您决定需要一个长时间运行的 TCP 连接双向传递 JSON,那么您应该考虑使用 WebSockets 之类的东西。我写了一个Android WebSocket 演示。默认情况下,Android 客户端连接到 websocket.org 回显服务器,但可以轻松更改。

我还发现了一个PHP WebSockets implementation

推送方法

现在,如果您的计划是在没有客户端启动连接的情况下将消息从服​​务器推送到客户端,您将需要 GCM(谷歌云消息传递)之类的东西。这是一篇涵盖GCM 和 PHP的文章。

于 2013-03-07T08:25:01.657 回答
1

查看适用于 Android 的 Google 云消息传递

Google Cloud Messaging for Android (GCM) 是一项服务,可让您将数据从服务器发送到用户的 Android 设备。这可能是一条轻量级消息,告诉您的应用程序要从服务器获取新数据(例如,朋友上传的电影),也可能是一条包含高达 4kb 有效负载数据的消息(因此即时消息等应用程序可以直接消费消息)。

于 2013-03-07T08:26:55.573 回答
0

通常,创建从服务器端到客户端的连接很复杂,因为:

  1. 客户端可能使用私有 IP 地址。
  2. 如果设备在防火墙后面连接,入站连接可能会被拒绝。
  3. 如果可以在后台运行并监视服务器以获取新消息,则需要安装应用程序。

使用 Web:这取决于浏览器如何支持 JavaScript API,尤其是新的 HTML5 功能,例如服务器发送事件

为了使服务器能够通过 HTTP 或使用专用的服务器推送协议将数据推送到网页,本规范引入了 EventSource 接口。

于 2013-03-07T08:29:44.280 回答
0

请使用下面的链接使用 php 在 mysql 中存储数据,并且您需要创建 web 服务,您将从 php 服务器获得两个响应

1) json

2) xml

如果您显示示例,请访问以下链接 在 php 中创建基本 Web 服务

还可以访问此链接以获得更好的描述 http://phpmaster.com/lets-talk-1/

于 2013-03-07T08:53:10.543 回答
0

您可以使用 HTTpReq 类:

public class HttpReq {

public   String send (String url){
    //send a http request and get the result    
    InputStream is = null;
    String result = "";

    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);

        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    }catch(Exception e){
        Log.e("log_tag", "Error in http connection " + e.toString());
    }

      try
        {
           BufferedReader reader = new BufferedReader(new InputStreamReader(is),8);
           StringBuilder sb = new StringBuilder();
           String line = null;

           while ((line = reader.readLine()) != null) 
            {
               sb.append(line + "\n");
            }

             is.close();
             result=sb.toString();

         }catch(Exception e){
        Log.e("log_tag", "Error converting result " + e.toString());
    }


    return result;
}

}

然后你使用这个类来建立连接并调用你的 php 文件来获取数据作为 JSonObject 。

 ht = new HttpReq();
             // send a http request with GET 
             x=ht.send("http://10.0.2.2/myFolder/myFile.php");
             JSONArray jArray;
            JSONObject json_data;

         String h[]=x.split("<");

           try {

                jArray = new JSONArray(h[0]);
                json_data = jArray.getJSONObject(0);
                url=json_data.getString("url");

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

在您的 Php 文件中,您可以使用此方法获取 JSON 数据或将其发送到 android App

Json_decode($string); 

Json_encode($string);

我希望这会帮助你:)

于 2013-03-07T08:57:30.267 回答