龙空技术网

arcgis js proxy代理设置

知识小镇 187

前言:

如今朋友们对“netpagesession”大致比较关切,同学们都想要了解一些“netpagesession”的相关文章。那么小编也在网上汇集了一些关于“netpagesession””的相关资讯,希望看官们能喜欢,各位老铁们快快来学习一下吧!

之前一直是写的一些科学科技相关的内容,这几天看头条上也有大量的技术文章,发篇技术文章,看看有多少同道中人,欢迎关注:知识小镇。

arcgis10.0发布的服务,使用query查询时,默认的查询方法是GET,url的最大长度是2048,如果超过这个长度,查询就会报错。但是使用POST查询,则无此限制。于是使用下面的代理,可以使默认的查询方法由GET变成post

使用方法如下:

在要POST的方法之前,加入如下语句

esri.config.defaults.io.proxyUrl = "../proxy.jsp";//该JSP是相对路径

esri.config.defaults.io.alwaysUseProxy = true;

测试如下:

这样大量URL就变成了POST

proxy.jsp代码如下:

<%@page session="false"%>

<%@page import="java.net.*,java.io.*" %>

<%

String [] serverUrls = {

""

};

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);

}

%>

标签: #netpagesession