`
jueyue
  • 浏览: 195810 次
社区版块
存档分类
最新评论

地图转发使用代理访问地图服务器

 
阅读更多

好久没有写博客,今天凑机会写一个,这个是公司的需求,因为大部分业务都是内网访问的,而且服务器也基本上是不能连接外网的,但是我们的实时交通这个快大家也都是知道的,没有外网是不可能做到的,所以我们想了一个折中的办法,找一台代理服务器来代理,只要进行转发就可以了,话不多说上代码

	// 处理GET请求
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("----------------来请求了一次------------");
		String level = request.getParameter("level");
		String x = request.getParameter("x");
		String y = request.getParameter("y");
		String cache = request.getParameter("cache");
		ImageInputStream insr = getRealTimeTraffic(level,x,y,cache);
		BufferedOutputStream  out = new BufferedOutputStream(response.getOutputStream());
		response.setContentType("png");   
		byte c[] = new byte[1024];
		int len = 0;
		while((len = insr.read(c))>0){
			out.write(c, 0, len);


		}
		out.flush();
		out.close();
		System.gc();
	}


/**
	 * 从外网获取数据流
	 * @param level
	 * @param x
	 * @param y
	 * @param cache
	 * @return
	 */
	private ImageInputStream getRealTimeTraffic(String level,String x,String y,String cache){
		String url = String
				.format("****网站?v=1.0" +
						"&t=1&zoom=%s&x=%s&y=%s&cache=%s",level,x,y,cache);
		URL myURL = null;
		URLConnection httpsConn = null;
		try {
			myURL = new URL(url);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		try {
			httpsConn = (URLConnection) myURL.openConnection();
			if (httpsConn != null) {
				ImageInputStream insr =  ImageIO.createImageInputStream(
						httpsConn.getInputStream());
				return insr;
			}
		}catch (IOException e) {
				e.printStackTrace();
		}
		return null;
	}

 这样就可以在一定范围解决问题了

分享到:
评论

相关推荐

    内网nginx正向代理外网,并实现高德地图,nginx-1.22.1、proxy、sub-filter、openssl

    内网nginx正向代理外网,并实现高德地图:web资源服务器A,搭建nginx转发服务,和webJsAPI的字符替换,涉及两个包nginx-1.22.1.tar.gz、ngx_http_substitutions_filter_module-master.zip代理服务器B,搭建nginx外网...

    apache+tomcat+geoserver地图配置文档

    2. **Apache HTTP Server**: Apache是一个开源的Web服务器,用于提供静态内容和作为反向代理,转发请求到Tomcat服务器处理动态内容。安装Apache并确保其能正常运行,通过访问`http://localhost`或`http://127.0.0.1`...

    解决openlayers跨域访问的解决方案

    你需要确保你的地图服务器支持JSONP响应。 2. **CORS (Cross-Origin Resource Sharing)**: CORS是现代浏览器支持的一种更安全、更灵活的跨域方式。服务器通过在HTTP响应头中设置`Access-Control-Allow-Origin`字段...

    ShadowBaiduMap:百度地图服务的匿名代理服务器

    《ShadowBaiduMap:使用Node.js与MongoDB构建的百度地图匿名代理服务器》 在当前的网络环境中,用户隐私保护日益受到重视。针对这一需求,"ShadowBaiduMap"应运而生,它是一款基于Node.js和MongoDB开发的匿名代理...

    WebGIS访问ArcGIS安全认证服务代理配置解决方案-Java版本[参照].pdf

    这可以通过设置访问权限,只允许经过身份验证的用户访问地图服务来实现。 2. **部署Java版本的代理页面**: 下载并部署ESRI提供的Java版本代理页面到Tomcat或其他Web服务器,例如创建一个名为`java`的目录来存储...

    openlayers geoserver代理的配置文件

    描述中提到的“利用自己发布的geoserver发布的wfs,自己写的openlayers去访问,需要代理”,意味着开发者已经部署了GeoServer并发布了一些WFS服务,同时也在前端使用自定义的OpenLayers应用来展示地图。由于...

    Web站点跨域说明

    3. **代理服务器**:通过在服务器端设置一个代理,将客户端的请求转发到目标资源服务器,从而绕过浏览器的同源策略。 4. **Window.postMessage API**:用于在具有不同源的窗口之间进行通信,例如在嵌入的IFrame和父...

    nginx实现跨域访问遇到的问题

    Nginx 是一款轻量级的 Web 服务器、反向代理服务器和电子邮件代理服务器,然而在实现跨域访问时,会遇到一些问题。本文将讨论 Nginx 实现跨域访问遇到的系统环境问题解决方法,并分享踩过的坑。 跨域是什么? -----...

    ArcGIS API for Flex开发WebGIS中的安全沙箱问题

    代理服务会代替客户端向目标服务器发起请求,并将结果转发给客户端,从而规避跨域限制。 4. **配置API**:在使用ArcGIS API for Flex时,需要正确配置服务URL,确保它们指向已设置好跨域策略的资源。 5. **处理...

    arcgis api for javascript跨域处理方案

    2. 配置代理:修改`proxy.config`文件,添加你需要通过代理访问的ArcGIS服务URL。 3. 在代码中使用代理:在调用ArcGIS API的函数时,将服务URL替换为代理服务器的URL,例如`...

    arcgis js跨域解决策略

    配置proxy.config文件,设置ArcGIS服务的白名单,指定哪些服务允许通过代理访问。 2. **配置Web应用**:在你的ArcGIS JavaScript API应用中,设置proxyPath指向部署的代理服务URL。例如: ```javascript var map ...

    nginx解决跨域案例

    Nginx作为一个反向代理服务器,可以接收来自客户端的请求,然后转发到后端服务器。我们可以通过配置Nginx,让它在转发请求前添加适当的响应头,使得浏览器允许跨域请求。 3. **Nginx 配置跨域** 在Nginx的配置...

    arcgis JavaScript api proxy

    它本质上是一个中间服务器,客户端的JavaScript请求首先发送到这个代理服务,然后由代理服务转发到实际的目标服务器,获取的数据再由代理服务返回给客户端,从而绕过了浏览器的同源策略。 ArcGIS JavaScript API中...

    proxy Java版

    为了解决这个问题,代理服务器可以作为一个中介,转发请求并添加适当的`access-control-allow-origin`响应头,允许跨域请求。在这个Java代理服务中,开发者添加了CORS支持,解决了"access-control-allow-origin"缺失...

    百度地图开发java源码-phpsocks5:从code.google.com/p/phpsocks5自动导出

    综上所述,这个项目提供了使用Java开发百度地图应用的实例,同时结合了PHP编写的SOCKS5代理库,适用于需要通过代理访问地图服务的情况。对于想要学习如何在Java项目中集成百度地图功能,以及如何处理网络代理的...

    mapproxy-Tomcat下proxy.cgi设置实例

    你需要设置允许通过代理访问的特定服务URL,这通常是你的地图服务API地址。 4. **配置Tomcat**:将`proxy.cgi`文件放置在Tomcat的Web应用程序目录下的`cgi-bin`子目录中。如果没有这个子目录,需要手动创建。例如,...

    map-api-relay-server

    **中继服务器**:中继服务器是一种代理服务器,它的作用是作为客户端和目标服务器之间的中介。在这个项目中,map-api-relay-server可能是为了处理一些特定的需求,如缓解原地图API的请求限制、缓存数据、或者在多个...

    arcgis api for silverlight跨域文件

    3. **使用代理服务**:在某些情况下,可以创建一个中间代理服务,该服务运行在与你的应用相同的域上,它负责转发到其他域的请求。这样,所有请求都是同源的,避免了跨域问题。 4. **Silverlight安全设置**:在...

    跨域引用资源技术

    1. **配置反向代理**:反向代理服务器(如Nginx或Apache)可以接收来自不同源的请求,并将它们转发到同一源的资源。这样,不同域名的客户端可以通过代理服务器访问同一份资源,从而实现跨域。这种方法适用于完全控制...

Global site tag (gtag.js) - Google Analytics