最近在使用arcgisfor javascript开发调用一个GP服务,由于传入的参数字符较大,使用get请求无法满足要求,需要使用post请求,因此需要配置代理。
首先在在github上下载esri提供的代理代码,下载地址为。
https://github.com/Esri/resource-proxy/releases
从下载的压缩中有多种计算机语言支持,.net、Java、PHP。我们使用的是Java版。但是需要注意的是,下载的版本需要tomcat服务器上的jdk相支持。这里下载的是1.1.2版。
选择Java文件,将其复制到tomcat目录appwebs文件夹下。配置service服务地址,如果有多个服务地址,相应配置即可。最后proxy.config配置如下图所示。
输入如下的url链接。
http://192.168.3.20:8080/Java/proxy.jsp?ping,如果成功返回如下图所示的界面。
输入如下图示所示的地址验证是否代理成功了。
http://192.168.3.20:8080/Java/proxy.jsp?https://192.168.3.17/rdcgis/rest/services/?f=pjson
但是遇到如下的错误。
No subject alternative names present
出现上面的错误大概意思是没有安全验证。注意将发布的是http开头的,加了s的https需要安全验证,这里出现一点疑惑,因为发布的服务不论使用http还是https,都是可以访问,不知道为何。最后使用了http代理访问结果如下图所示。
当然也可以使用http://192.168.3.20:8080/Java/proxy.jsp?https://192.168.3.17/rdcgis/rest/services
来查看发布相关的服务,如下图所示。
最后在需要使用代理的地方,添加如下的代码。
esriConfig.defaults.io.proxyUrl= "192.168.3.20:8080/Java/proxy.jsp";
esriConfig.defaults.io.alwaysUseProxy = false;
至此,整个代理配置就说明完了。至于为何要使用代理,还有其他原因:一是请求跨域资源,二是token安全服务,还有就是我现在遇到的请求参数过大。更多资料可以查看相关内容。
更多内容,微信扫二维码关注公众号