1. 程式人生 > >Arcgis API for Javascript筆記 -- Step1搭建代理伺服器

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.釋出代理伺服器並測試

4.在專案中啟用代理

在專案中增加全域性代理。將下列程式碼新增到專案頭部

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

如果僅個別服務地址需要代理也可使用下列形式

urlUtils.addProxyRule({
    urlPrefix:"route.arcgis.com",
    proxyUrl:"/arcgisproxy/proxy.jsp"
});