【问题标题】:How to receive JSON data in php from Triptracker android app?如何从 Triptracker android 应用程序接收 php 中的 JSON 数据?
【发布时间】:2012-11-29 12:58:05
【问题描述】:

应用程序将 gps 位置发送到用户设置的 php 服务器。我有一个 PHP MySQL 模型服务器。我不知道如何接收从应用程序发送到我服务器数据库中的 JSON。任何帮助,将不胜感激。提前致谢。代码在https://github.com/jcs/triptracker/blob/master/src/org/jcs/triptracker/TrackerService.java

POST 参数是一个位置数组,每个元素都是一个哈希值,包括时间(来自位置服务的 Unix 时间戳)、纬度和经度(任意精度的两个浮点值)以及以米/秒为单位的速度。

提前致谢。

【问题讨论】:

标签: php android json gps location


【解决方案1】:

您可以使用 json_decode() 从收到的 json 中创建一个对象。

一个例子是:

$data = json_decode($_POST['yourdata']);

假设 JSON 看起来像这样:

{"foo":"bar"}

您现在可以这样做:

echo $data->foo;

在你的 mysql 查询中使用这些数据。

【讨论】:

    【解决方案2】:

    你可以像这样在你的 php 中获取变量:

    $lat = $_REQUEST['lat'];
    $lng = $_REQUEST['lng'];
    

    然后你可以在你的数据库中插入 $lat 和 $lng。

    例子:

    function launchQuery($call)
    {
        $link = mysqli_init();
        if (!$link) {
            die('mysqli_init failed');
        }
    
        if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 1')) {
            die('Setting MYSQLI_INIT_COMMAND failed');
        }
    
        if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
            die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
        }
    
        if (!mysqli_real_connect($link, $dbhost, $dbuser, $dbpassword, $dbname, $dbport)) {
            die('Connect Error (' . mysqli_connect_errno() . ') '  . mysqli_connect_error());
        }       
    
        mysqli_query($link,"SET NAMES 'utf8'");
        $rs = mysqli_query($link, $call);
    
        mysqli_close($link);
    
        return $rs;
    } 
    
    launchQuery("insert into whatever_your_table_name_is (latitude, longitude) values (".$lat.",".$lng.");");
    

    【讨论】:

      【解决方案3】:

      我花了一些时间来解码格式,但下面的 sn-p 正在从应用程序中提取数据。请注意,trip tracker 可能会提交一系列以前无法传输的位置点。

      <?php
      $locations  = $_REQUEST['locations'];   // Get all POST arrays
      
      i = 0;                                  // Choose first locations array
      
      // Now you can access single fields with:
      time      = $locations[i]['time']; 
      latitude  = $locations[i]['latitude'];
      longitude = $locations[i]['longitude'];
      speed     = $locations[i]['speed'];
      
      ?>
      

      请注意,“时间”是自纪元以来的 MILLIseconds,对于 unix 时间戳,我们需要除以 1000 为浮点数以允许转换。同样,可以有超过 1 个可用的位置数组,通过在循环中向上计数 i 来访问其他数组。

      【讨论】:

        猜你喜欢
        • 2012-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多