示例介绍

发送反馈


作为示例,本文以 JavaScript 为工具,构建 HTTP 请求与 SuperMap iServer 进行交互,说明 REST 服务的访问与使用过程;利用 REST API 实现进行一些主要的地图操作,介绍 SuperMap iServer REST 服务提供的丰富功能。

有关构建 HTTP 请求的详细说明,请参见:客户端构建 REST 请求

有关示例的源代码,请参见:%SuperMap iServer_HOME%\samples\code 文件夹。

示例中要引用到两个 JavaScript 文件,json_parse.js 和 toJSON.js。可以在 json_parse.js 提供了 JSON 字符串的解析函数 json_parse,toJSON.js 提供了获取 XMLHttpRequest 对象的函数 getcommit、将 JavaScript 对象转化为 JSON 字符串的函数 toJSON。可以在%SuperMap iServer_HOME%\samples\code\UseRESTAPI\HelloREST 目录下获取到。

首先构建一个简单的 HTML 页面,用于结果的展示,本文所有示例的展示都基于该 HTML 页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

 <HEAD>

  <TITLE>REST 示例</TITLE>

  <script  type="text/javascript" src="json_parse.js"></script>

  <script  type="text/javascript" src="toJSON.js"></script>

 </HEAD>

 <BODY>

    <input type="button" name="Submit" value="Test" onclick="" /></input>

    <br><br>

    <div align=left id="container" style="left:50px;top:50px">

 </BODY>

  <script  type="text/javascript">

//示例代码添加的地方

  </script>

</HTML>

说明:Test 是一个按钮,用来执行示例代码,container 是一个 Div,用来展示示例的结果,示例代码以方法的形式放在“//示例代码添加的地方”下面,然后把方法名添加在 Test 的“onclick=”后面,这样,在点击 Test 的时候,就会在 container 中看到结果。

构建一个对 maps 资源执行 GET 请求的应用,并将服务器响应全部显示出来,在“//示例代码添加的地方”下面构建方法 getMapsAll()如下:

//示例代码添加的地方

function getMapsAll()

{

    //获取 XMLHttpRequest 对象

    var commit=getcommit();

    //HTTP 请求的方法类型,这里是 GET

    var method="GET";

    //请求的地址,即 maps 资源

    var uri="http://localhost:8090/iserver/services/map-china400/rest/maps.json";

    //设置是否为异步通信

    var async=false;

    //用户名和密码,当服务器需要验证时指定

    var user="";

    var password="";

    //消息体(Entity Body)内容

    var entry=null;

    //建立 HTTP 连接

    commit.open(method,encodeURI(uri),async,user,password);

    //设置消息头(Message Headers)

    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    //发送 HTTP 请求

    commit.send(entry);

    //commit.responseText 就是接收的服务器响应

    //alert(commit.responseText);

    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。

    var response = json_parse(commit.responseText, null);       

    //获取用作显示的 Div 容器。

    var container = document.getElementById('container');

    //显示所有响应内容

    container.innerHTML +=toJSON(response);

}

然后将 getMapsAll()方法添加到 Test 中,如下:

<input type="button" name="Submit" value="Test" onclick="getMapsAll()" /></input>

启动本机的 SuperMap iServer REST 服务,在 HTML 页面中点击 Test 按钮,会得到对 http://localhost:8090/iserver/services/map-china400/rest/maps.json 执行 GET 请求的响应,效果如下:

至此,一个简单的 HTTP 请求构建完成,在 SuperMap iServer REST 服务中,每一个资源对应一个 URI 地址,对资源执行不同的 HTTP 方法可以对资源进行不同的操作,HTTP 请求的参数包含的 URI 中或消息体(Entity Body)中。

示例中需要说明: