arcgis api for javascript中使用proxy.jsp
来源:互联网 发布:ccs软件是什么软件 编辑:程序博客网 时间:2024/05/31 06:22
当我们使用arcgis api for javascript 查询arcgis服务时,如果查询的参数很长时,通过get方式提交会查询不到结果,因为get方式提交的参数有长度限制,需要通过代理的方式使用post提交。
arcgis 提供了一种解决方案就是proxy.jsp. 首先在项目页面js中引入 proxy.jspesriConfig.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 proxyIP="http://172.25.64.110";String[] serverUrls = { proxyIP+":8399/rest/services" //NOTE - no comma after the last item};%><%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(!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());// System.out.println(request.getMethod());// System.out.println(con.getRequestMethod());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); System.out.println(new String(bytes)); }} catch(Exception e) {e.printStackTrace();response.setStatus(500);}%>
0 0
- arcgis api for javascript中使用proxy.jsp
- arcgis api for javascript中使用proxy.jsp
- ArcGIS API for Javascript proxy的配置
- ArcGIS API for javascript中搜索框的使用问题
- arcgis api for javascript IdentifyTask使用
- ArcGIS API for JavaScript
- ArcGIS API for JavaScript使用中出现的BUG(1)
- arcgis api for JavaScript相关
- arcgis api for JavaScript相关
- ArcGIS API for Javascript热区图
- ArcGIS API for Javascript介绍
- ArcGIS API for JavaScript是什么
- ArcGIS API For JavaScript部署
- ArcGis for javascript api 在eclipse中搭建运行环境
- 在Eclipse中搭建ArcGIS API for JavaScript 开发环境
- 使用the ArcGIS API for JavaScript创建程序
- 使用the ArcGIS API for JavaScript创建程序
- 使用ArcGIS API for JavaScript 4.3 加载一个瓦片地图
- sql执行顺序
- java实现 二叉树的深度&判断二叉树是否是平衡二叉树
- SVM多分类问题,解决方案
- Linux内核分析:实验八
- Mat类详解(二)
- arcgis api for javascript中使用proxy.jsp
- 空间离散点和合成
- Linux下,可执行文件的链接保持链接到最新的文件?
- Scrapy框架学习笔记
- 前端理解整理:响应式布局的理解
- UML建模学习3:UML基本构造块之关系
- SM2算法第一篇:ECC加密算法
- if比较习惯
- 输入一串字符,读取第一个单词