欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-01 23:24:22
...

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

	// 处理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;
	}

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