用PHP处理Android中的数组POST

时间:2015-08-27 11:21:42

标签: php arrays android-studio http-post

所以基本上这是一个由某人制作的脚本,我可以运行该程序,但不能在我的php中通过Android接收POST。根据制造商的说法:

  
    

这是一款Android应用,我在几个小时内就把它放在一起,在手机上定期进行GPS定位跟踪并发送GPS坐标     到HTTP服务器。

  
     

输入接受POST请求的URL,选择轮询间隔,然后选择   点按"启用跟踪"。 Android位置管理器将返回GPS   每隔一段时间(这不准确)和   信息将发布到您的网址。

     

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

我已经在PHP中尝试了一些方法,例如:

$locations  = $_REQUEST['locations'];   // Get all POST arrays

$i = 2;                                  // 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'];

$sogilat = $_POST['latitude'];
$sogilong = $_POST['longitude'];

$data = json_decode($_POST['latitude']);
echo $data->latitude;

但没有运气,附上了部分代码:

private void sendLocation(Location location) {
        List<NameValuePair> pairs = new ArrayList<NameValuePair>(2);
        pairs.add(new BasicNameValuePair("time",
            String.valueOf(location.getTime())));
        pairs.add(new BasicNameValuePair("latitude",
            String.valueOf(location.getLatitude())));
        pairs.add(new BasicNameValuePair("longitude",
            String.valueOf(location.getLongitude())));
        pairs.add(new BasicNameValuePair("speed",
            String.valueOf(location.getSpeed())));

        /* push these pairs onto the queue, and only run the poster if another
         * one isn't running already (if it is, it will keep running through
         * the queue until it's empty) */
        updateLock.writeLock().lock();
        mUpdates.add(pairs);
        int size = service.getUpdatesSize();
        cacheUpdates();
        updateLock.writeLock().unlock();

        logText("location " +
            (new DecimalFormat("#.######").format(location.getLatitude())) +
            ", " +
            (new DecimalFormat("#.######").format(location.getLongitude())) +
            (size <= 1 ? "" : " (" + size + " queued)"));

        if (httpPoster == null ||
        httpPoster.getStatus() == AsyncTask.Status.FINISHED)
            (httpPoster = new HttpPoster()).execute();
    }

可以找到完整的脚本here

请帮助,谢谢......

0 个答案:

没有答案