---
title: "REST 服务作为移动应用程序的数据来源"
date: "2016-01-13"
categories: 
  - "development"
  - "mobile"
  - "software"
tags: 
  - "cross-platform-mobile-development"
  - "gps-apps"
  - "mobile-development"
  - "mobiletogether"
  - "rest-services"
description: 探索如何使用MobileTogether在移动应用程序中实现REST服务，重点在于如何利用GPS坐标获取准确的海拔数据。
---
Status: #blog

Tags:  #cross-platform-mobile-development #gps-apps #mobile-development #mobiletogether #rest-services

Categories: [development](/blog/zh/category/development.md) | [mobile-development](/blog/zh/category/mobile-development.md) 
# REST 服务作为移动应用程序的数据来源

MobileTogether 平台能够帮助开发者将从外部来源获取的信息填充到移动应用程序中，这些信息可以通过 [REST 和 SOAP Web 服务](https://www.altova.com/zh/mobiletogether/sources.html) 获取，并且可以处理接收到的各种数据格式，包括 XML、JSON 和 HTML。 MobileTogether 对 REST 和 SOAP 的支持，为移动应用程序开发者提供了访问海量在线数据资源的途径，从而支持各种应用场景。

![图片01](/blog/images/image01.png)

<!--more-->

在 MobileTogether Designer 中的“添加数据源”选项，提供了专门的对话框，用于提供 REST、SOAP 和 HTTP 请求的详细信息。 在本文中，我们将介绍如何实现一个 REST 请求，用于根据提供的经纬度坐标查询海拔数据。

**挑战：**

GPS数据既方便又令人沮丧。如果移动应用程序持续运行GPS追踪功能，用户可能会每隔几秒钟就收到大量数据，并且设备的电池会迅速耗尽。此外，GPS系统在记录经纬度坐标时非常精确，但在报告海拔高度时却不够准确。例如，如果我们想要记录从山脚到山顶的海拔变化，就需要一个更好的解决方案。

使用 MobileTogether Designer，我们可以创建一个跨平台的移动应用程序，让最终用户能够根据需要，针对特定地点收集数据。我们可以提取每个点的坐标，并利用美国地质调查局（USGS）提供的在线服务（如[USGS 网站](http://nationalmap.gov/3DEP/3dep_prodserv.html)上描述的）查询精确的海拔数据。

首先，我们可以在网页浏览器中通过以下网址 [http://ned.usgs.gov/epqs](http://ned.usgs.gov/epqs) 试用该网络服务

![美国地质调查局的点查询服务](/blog/images/USGS-site-Capture-B.png)

我们只需提供一组坐标，选择单位和输出数据类型，然后点击“获取海拔”。“海拔点查询服务”将返回以下结果：

![美国地质调查局的点查询服务结果](/blog/images/USGS-site-result-edit-B.png)

这个结果有两个有趣的特点：首先，结果窗口中生成的URL可以作为模板，用于在MobileTogether中指定REST服务的数据源；其次，结果内容展示了XML结构。以下是扩展后的URL：

![美国地质调查局（USGS）点查询服务的完整示例URL](/blog/images/URL-Capture-2.png)

为了将 REST 服务作为移动应用程序的页面数据源，我们可以将 URL 粘贴到 MobileTogether 的 RESTful API 请求对话框中，并用实际值替换 x 和 y 坐标的参数。 此外，我们还会使用一个参数来指定单位，以便用户可以选择英尺或米。

![MobileTogether 设计器 RESTful API 对话框](/blog/images/Designer-API-dialog-Capture-3-edit.png)

在我们的应用程序中，坐标数据由一个动作组读取，并将经度和纬度值更新到定义为持久数据的变量中。

![移动设备协同定位操作组](/blog/images/Get-Location-Action-Group-Capture.png)

这些值随后会作为参数提供给 GET 请求，具体参数由“参数”表格中“值”列的 XPath 表达式定义。MobileTogether Designer 的集成帮助系统包含了关于 REST 服务选项和设置的详细文档，包括对某些服务所需的 HTTP 头部字段和 HTTP 多部分内容的支持。

当您关闭对话框后，一个与REST请求相对应的新的数据源将自动添加到“页面资源”窗口中。右键单击新的数据源会打开一个上下文菜单，其中一个选项是“从XML导入结构”。这将打开一个文件对话框，您可以在其中指定一个物理文件，或者您可以粘贴原始示例URL，其中包含嵌入的参数值，以便直接从REST服务获取结构。无论哪种方式，"页面资源"结构都会更新，其中包含与查询结果相对应的节点

![MobileTogether 设计器：源代码视图](/blog/images/Designer-Page-Source-Capture.png)

如果您更喜欢使用 JSON 数据而不是 XML，只需在 RESTful API 请求对话框中选择 JSON，并修改 URL 以从 Web 服务获取 JSON 数据。上下文菜单会提供“从 JSON 导入结构”的选项，并且在 MobileTogether Designer 中的其他功能也都以相同的方式运作。

以下图片展示了完成的应用程序的主要界面。在左侧的屏幕上，应用程序刚刚启动，正在等待用户通过点击其中一个单选按钮来启用GPS定位功能。在右侧，GPS已启用，并显示了“更新位置”按钮。用户点击此按钮以获取坐标，然后应用程序会执行REST请求，以获取相应的海拔高度。

![GPS 演示移动应用程序的两种视图](/blog/images/app-ui-1b.png)

然后，该应用程序会关闭GPS定位功能以降低耗电量，并更新显示屏，显示新的位置信息

![GPS 演示应用程序记录的某个位置的数据视图](/blog/images/app-ui-2b.png)

“显示地址”和“显示地图”按钮会展开视图，显示更多关于最新坐标的信息。一个“设置”页面允许用户选择偏好设置，并将一组坐标保存为 GPX 文件。此外，该应用程序还包含一个“详细信息”页面，用于显示最新记录点的原始 GPS 数据。

如果您想亲自体验这款应用程序，请 [下载 MobileTogether 设计器](https://www.altova.com/zh/download/mobiletogether.html) - 它可以免费使用，并且您可以在 GitHub 上获取地理定位应用程序以及相关文件，网址是：[网址] [https://github.com/altova/MobileTogether-geolocation-example](https://github.com/altova/MobileTogether-geolocation-example). 您可以在 MobileTogether Designer 内置的模拟器中运行它，并预览应用程序在 Android、iOS、Windows Phone 等平台上的显示效果。我们甚至提供了一个包含坐标的数据文件，用于模拟移动设备在运行过程中移动，从而更真实地预览应用程序的效果。
