当我们使用arcgis api for javascript 查询arcgis服务时,如果查询的参数很长时,通过get方式提交会查询不到结果,因为get方式提交的参数有长度限制,需要通过代理的方式使用post提交。

arcgis 提供了一种解决方案就是proxy.jsp.

首先在项目页面js中引入 proxy.jsp:esriConfig.defaults.io.proxyUrl=http://servername:prot/arcgis_js_api/proxy.jsp  引入代理页面

esriConfig.defaults.io.alwaysUseProxy=true;         设置代理是否一直起作用

引入之后把proxy.jsp放入到项目中。

代理页面源码如下:

<%@page session="false"%>
<%@page import="java.net.*,java.io.*" %>
<%!
String[] serverUrls = {"http://servername:8399/arcgis/rest/services"//对什么服务起作用,可以配置多个用","分割。
};
try {String reqUrl = request.getQueryString();boolean allowed = false;String token = null;for(String surl : serverUrls) {String[] stokens = surl.split("\\s*,\\s*");if(reqUrl.toLowerCase().contains(stokens[0].toLowerCase())) {allowed = true;if(stokens.length >= 2 && stokens[1].length() > 0)token = stokens[1];break;}}if(reqUrl.endsWith(".png")) allowed = true;if(!allowed) {response.setStatus(403);return;}if(token != null) {reqUrl = reqUrl + (reqUrl.indexOf("?") > -1 ? "&" : "?") + "token=" + token;}URL url = new URL(reqUrl);HttpURLConnection con = (HttpURLConnection)url.openConnection();con.setDoOutput(true);con.setRequestMethod(request.getMethod());if(request.getContentType() != null) {con.setRequestProperty("Content-Type", request.getContentType());}con.setRequestProperty("Referer", request.getHeader("Referer"));int clength = request.getContentLength();if(clength > 0) {con.setDoInput(true);InputStream istream = request.getInputStream();OutputStream os = con.getOutputStream();final int length = 5000;byte[] bytes = new byte[length];int bytesRead = 0;while ((bytesRead = istream.read(bytes, 0, length)) > 0) {os.write(bytes, 0, bytesRead);}}else {con.setRequestMethod("GET");}out.clear();out = pageContext.pushBody();OutputStream ostream = response.getOutputStream();response.setContentType(con.getContentType());InputStream in = con.getInputStream();final int length = 5000;byte[] bytes = new byte[length];int bytesRead = 0;while ((bytesRead = in.read(bytes, 0, length)) > 0) {ostream.write(bytes, 0, bytesRead);}
} catch(Exception e) {response.setStatus(500);
}
%>

转载于:https://www.cnblogs.com/telwanggs/p/4929564.html

arcgis api for javascript中使用proxy.jsp相关推荐

  1. ArcGIS API for Javascript 中文文档 百度网盘链接

    对于arcgis api for javascript 学习,最令人头痛的头疼的是中文文档的缺失,这边是我整理的中文文档,用于共同学习. 链接:https://pan.baidu.com/s/1YE_ ...

  2. Arcgis api for Javascript中多图层查询(上)

    在使用arcgis for javascript api 进行地图要素查询的过程中,发现使用QueryTask查询,单次只能查询单个图层:如果需要查询多个图层,就必须要新建多个QueryTask对象来 ...

  3. arcgis api for JavaScript _跨域请求

    arcgis api for JavaScript  中出现跨域请求是常见问题, 通常出现类似如下错误消息类似: XMLHttpRequest cannot load http://10.32.2.7 ...

  4. 基于ArcGIS API for JavaScript加载百度各种类型切片地图

    文章目录 应用场景 需求分析 效果图 实现代码 原理解读 应用场景 部分项目基于ArcGIS平台,但是甲方只提供部分矢量数据,用作底图的地形图数据没有,表示可以使用百度地图作为底图.所以才会有使用Ar ...

  5. 初学ArcGIS API for JavaScript

    初学ArcGIS API for JavaScript 对于初学者来说,关于esri提供的一些样式和dojo自带的一些样式还是需要有一定的了解,这块在<WebGIS开发从基础到实践>讲解的 ...

  6. ArcGIS API for JavaScript Bookmarks(书签)

    说明:本篇博文介绍的是ArcGIS API for JavaScript中的 Bookmarks(书签) ,书签的作用是,把地图放大到一个地方 添加书签,书签名称可以和地图名称一直,单击标签 地图会定 ...

  7. ArcGIS API for JavaScript:Layer之间那点儿事

    先来看一个模型: |–TiledMapServiceLayer   |       |–ArcGISTiledMapServiceLayer   |–DynamicLayer   |       |– ...

  8. ArcGIS API for JavaScript——地图展示

    ArcGIS API for JavaScript 能够实现的最基本功能就是地图展示,包括地图缩放.平移.定位.实时显示坐标.展示地图要素(指北针.比例尺.图例).切换地图等.本文将详细介绍地图展示的 ...

  9. 地理信息系统(GIS)系列——ArcGIS API for JavaScript 3.9(1)

    Visual Studio 智能提示配置:将以下 JavaScript 文件引入项目中 arcgis_js_v39_sdk\arcgis_js_api\sdk\jshelp\jsapi_vsdoc12 ...

最新文章

  1. BigDecimal 比较大小需要注意的事项
  2. 任务05—学习 MARKDOWN 语言
  3. 系统时间大全,待整理
  4. protobuf入门教程(五):枚举(enum)、包(package)
  5. 工作总结22:拦截器
  6. Html.RenderPartial使用三个参数
  7. 55种数据可视化开源工具_通过开源工具增强学生能力的15种方法
  8. 手把手带你基于嵌入式Linux移植samba服务
  9. python用户登录(输入用户名和密码)dic_Python使用装饰器模拟用户登陆验证功能示例...
  10. 没什么本钱怎么做生意?
  11. 兰州大学c语言课程作业答案,2016兰州大学C语言程序设计课程作业1附答案.doc
  12. char 转换 二进制 java_使用Java读取二进制文件并将其转换为char文件 - java
  13. 潜力环保类元宇宙项目地球超人解析
  14. 关于 打印页面 图片被截断
  15. CPU性能的三大主要参数
  16. RK356X SPI 使用
  17. 有适合宝妈在家做的兼职推荐吗?5个适合在家做的副业兼职!
  18. PE 521【DP】
  19. 日本某地(我猜应该是在米花町)发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
  20. DB2数据库的基础学习

热门文章

  1. 邀请合作如何表达_如何邀请大咖嘉宾来商群分享
  2. echarts中toolbox位置_echarts toolbox 扩展
  3. python cookie池_Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
  4. mapreduce分组统计_mongodb中使用mapreduce进行分组统计
  5. .net 反编译_向.net/Unity 程序员推荐一个十分因吹斯听的网站:sharplab.io
  6. 【蓝桥杯单片机】DS1302时钟芯片+DS18B20单总线温度传感器(官方驱动源码改写)
  7. STM32 FSMC/FMC原理保姆级讲解(二)
  8. python网站服务器好麻烦_python写的网站,云服务器经常无法访问
  9. 【设计模式】第二章 代理模式
  10. 【高校宿舍管理系统】第三章 Layui整合Axios