使用REST接口获取GeoServer中的图层列表

  最近在工作的过程中,有一个需求是在外部程序中对GeoServer进行管理操作,通过查阅资料发现GeoServer的REST接口可以满足需求。REST接口使用HTTP调用的方式,无需登录Web管理界面就可以对GeoServer进行简单的调用和配置。

  GeoServer官网对REST的配置API和示例的介绍地址为:http://docs.geoserver.org/stable/en/user/rest/index.html

  下面的程序通过使用REST接口,请求GeoServer中图层的列表。

<?php
    $url = "http://localhost:8180/geoserver/rest/layers/";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//设置为true,表示获取的内容以字符串的形式返回
    curl_setopt($ch, CURLOPT_VERBOSE, true);//设置为true,返回执行过程中的异常
    curl_setopt($ch, CURLOPT_GET, True);
    $passwordStr = "admin:geoserver";//geoserver的用户名:密码
    curl_setopt($ch, CURLOPT_USERPWD, $passwordStr);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept:application/json"));//HTTP请求头信息
    $successCode = 200;
    $buffer = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    if($info['http_code'] != $successCode){
        $msgStr = "请求失败!";
        echo $msgStr;
    }else{
        $outputArray = json_decode($buffer, true);
        $layerInfos = $outputArray['layers']['layer'];
        foreach($layerInfos as $k => $v){
            $layerNames[] = $v['name'];
        }
        echo json_encode($layerNames);
    }
?>
posted @ 2013-05-25 15:46  pallee  阅读(3453)  评论(0编辑  收藏  举报