方案一: 直接展示内容; <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> <scope>compile</scope> </dependency>
/** * eg: * http://localhost:8080/jump/urlRedirect?appId=1&abtestName=testab&defaultUrl=http%3A%2F%2Fm.ximalaya.com%2Fmarketing%2Factivity2%2F2103%2Fts-1561946950228 * * @param abtestname * @return */ @RequestMapping(value = "/urlGetHttpContent", method = {RequestMethod.POST, RequestMethod.GET}) @ResponseBody public String urlGetHttpContent(Integer appId, String abtestname, String defaultUrl, HttpServletRequest request, HttpServletResponse httpServletResponse) { if (StringUtils.isEmpty(abtestname) || StringUtils.isEmpty(defaultUrl) || appId == null) { log.error("urlGetHttpContent params exist empty"); return ""; } String decodeDefaultUrl = ""; try { decodeDefaultUrl = URLDecoder.decode(defaultUrl, "UTF-8"); } catch (UnsupportedEncodingException e) { log.error("decode urlGetHttpContent defaultUrl error,defaultUrl {}", defaultUrl); } //保存unit信息 return getHttpContent(decodeDefaultUrl, request); } private String getHttpContent(String url, HttpServletRequest request) { if (url == null || url.equals("")) return ""; CloseableHttpClient httpclient = HttpClientBuilder.create().disableRedirectHandling().build(); HttpGet httpGet = new HttpGet(url); // httpGet.setHeader("User-Agent","MicroMessenger"); httpGet.setHeader("User-Agent", request.getHeader("User-Agent")); try { CloseableHttpResponse response = httpclient.execute(httpGet); HttpEntity responseEntity = response.getEntity(); return EntityUtils.toString(responseEntity); } catch (IOException e) { e.printStackTrace(); return "error"; } }
方案二:重定向
//这里设置cookie,用于下次请求; //382686,100030,100034,382258,382262,382307,382310,382369,382375 Cookie cookie = new Cookie("x-abtest-bucketIds", "382686%2C100030%2C100034%2C382258%2C382262%2C382307%2C382310%2C382369%2C382375"); cookie.setMaxAge(Integer.MAX_VALUE); cookie.setPath("/"); httpServletResponse.addCookie(cookie); //保存unit信息 try { String jumpUrl = jumpService.getJumpUrl(request, abtestName, decodeDefaultUrl); httpServletResponse.sendRedirect(jumpUrl); } catch (IOException e) { log.error("sendRedirect error,jumpUrl {}", decodeDefaultUrl); }