在客户端应用程序中使用服务器对象扩展
您可以在任何能够向服务器发出 HTTP 请求并对响应进行解析的应用程序中使用服务器对象扩展 (SOE)。SOE 的输入和输出都是简单类型,比如数字、文本字符串以及 XML 和 JSON 对象。消费应用程序 (Consuming Application) 本身不需要对 ArcObjects 有任何的了解。
您会经常在服务目录中对 SOE 进行测试(假设您当前正在使用 REST SOE),然后编写代码以在客户端应用程序中使用 SOE。
在服务目录中测试 SOE
通过向 SOE 提交简单类型,您可以在服务目录中测试 REST Web 服务 SOE。在地图服务上启用 SOE 后,导航至服务目录中的地图服务页面。在页面的底部,您会看到 SOE 列在“支持的扩展”下面。(如果未显示,请与 ArcGIS Server 管理员进行核实以确定是否已经清除了 REST 缓存。)
单击服务目录中的 SOE,您将可以单击和浏览您所提供的资源和操作。单击某个操作,您会看到一些可以用来测试 SOE 请求和响应的输入框。您应获得一个返回简单 JSON 或 HTML 的响应。
在客户端应用程序中使用 SOE
当您以 REST Web 服务的形式提供 SOE 时,您将可以在 Esri Web 或移动 API 中使用这一 SOE。无论使用哪种 API,处理 SOE Web 服务都需要执行如下操作:
-
从 Web 服务发出请求 - 包括建立一个参数列表并向服务器发送完整的 URL
-
对响应进行处理 - 需要了解请求的格式并知道如何解析此信息,以便在应用程序中执行一些有用的操作。
虽然编码模式相似,但是不同 API 下处理 SOE 所用的类会各不相同。
在 ArcGIS API for JavaScript 中,您将设置一个使用 JSON 的变量来存储 SOE 的所有输入参数。然后,使用 esri.request() 方法来执行 Web 服务调用。其响应是一个 JSON 对象。
在 ArcGIS API for Flex 中,您将扩展 BaseTask 类。BaseTask 上的 URL 属性应指向 SOE。然后,可以使用 Basetask 的 sendURLVariables 方法向 Web 服务发出请求。其响应是一个 Flex 对象,您可以通过此对象访问响应中所返回的不同 JSON 对象。
在 ArcGIS API for Silverlight 中,您可以按照下面的标准 Silverlight 做法来发出 Web 服务请求并处理 JSON 响应。下面的 Microsoft 帮助主题对相关信息进行了详细介绍:
-
如何:向基于 HTTP 的服务发出请求(介绍如何向 SOE 发出请求)
-
处理 JSON 数据(介绍如何处理响应)
-
Esri Web API 的在线 SDK 提供了用于显示上面模式的针对性的代码示例。