Arcgis API for Javascript笔记 -- Step1搭建代理服务器

前言

arcgis提供了许多图层服务供学习使用,这样节省了我们很多时间,将更多精力关注到arcgis for javascript api的学习之中。但由于这些服务大多是需要身份验证的服务,如果直接拿来使用的话,每次访问该服务都需要填写用户名和密码进行登录。为了一劳永逸的节省下这部分时间,我们需要搭建一个代理服务器。幸运的是arcgis同时提供了各种语言的代理服务器源码。下面我讲逐步演示搭建代理服务器的过程。

1.安装代理服务器源码

代理服务器源码地址:https://github.com/Esri/resource-proxy.git
使用github desktop客户端或直接下载压缩包解压。由于我只会Java语言,所以以Java语言举例。源码目录结构如下:
arcgis proxy 源码目录结构
Java目录下是一个完整的JavaEE项目。修改proxy.config后放入tomcat的webapp目录下即可。由于我经常需要修改proxy.config文件。所以选择以新建项目方式添加到eclipse当中。
1.在eclipse中新建Dynamic Web Project命名为arcgisproxy。
2.将下载的源码中Java文件夹下内容倒入到WebContent中。完成后目录结构如下
这里写图片描述

2.修改代理服务器配置

1.访问arcgis官网https://accounts.esri.com/注册账号。
2.在serverUrls节点中每个服务地址配置一个serverUrl

<?xml version="1.0" encoding="utf-8" ?>
<ProxyConfig allowedReferers="*"
                logFile="proxy_log.log"
                logLevel="INFO"
                mustMatch="true">
  <serverUrls>
    <serverUrl url="http://services.arcgisonline.com" matchAll="true"/>
    <!-- 下面填写需要代理的链接 -->
    <serverUrl 
        <!-- 链接地址 -->
        url="https://livefeeds.arcgis.com/arcgis/rest/services"
        <!-- 申请Token的地址,固定不应修改 -->
        tokenServiceUri="https://www.arcgis.com/sharing/generateToken"
        <!-- arcgis账号的用户名 -->
        username="XXX"
        <!-- arcgis账号的密码 -->
        password="XXX"
        <!-- 是否匹配所有链接。设置为true则所有前半部分与url匹配的链接都将被代理 -->
        matchAll="true"/>
  </serverUrls>
</ProxyConfig>
<!-- See https://github.com/Esri/resource-proxy for more information -->

3.发布代理服务器并测试

将arcgisproxy项目添加到tomcat中运行并打开浏览器访问
serverUrl中url记录的链接地址显示如下
这里写图片描述
而在链接前增加http://[yourmachine]:8080/Java/proxy.jsp?前缀后显示如下
这里写图片描述
则说明代理配置成功。
注意:测试时应在服务结尾增加?f=html后缀才符合arcgis 服务的REST格式
例如
服务名为:https://livefeeds.arcgis.com/arcgis/rest/services
则服务地址为:https://livefeeds.arcgis.com/arcgis/rest/services?f=html
测试代理的地址为:http://localhost:8080/arcgisproxy/proxy.jsp?https://livefeeds.arcgis.com/arcgis/rest/services?f=html

4.在项目中启用代理

在项目中增加全局代理。将下列代码添加到项目头部

esriConfig.defaults.io.proxyUrl = "/arcgisproxy/proxy.jsp"; 
esriConfig.defaults.io.alwaysUseProxy = true; 

如果仅个别服务地址需要代理也可使用下列形式

urlUtils.addProxyRule({
    urlPrefix:"route.arcgis.com",
    proxyUrl:"/arcgisproxy/proxy.jsp"
}); 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值