使用 Spring RestTemplate 元件之後,你會發現在使用如下代碼時:
String agent = request.getHeader("USER-AGENT").toLowerCase();
得到的 agent 不是浏覽器的資訊,而是 Java version.
如何避免這種情況呢?畢竟這個參數對服務端來說是非常重要的,尤其是下載下傳。
如下使用設定 USER-AGENT
HttpHeaders headers = new HttpHeaders();
headers.set(HttpHeaders.USER_AGENT,request.getHeader("USER-AGENT"));
HttpEntity entity = new HttpEntity<>(str, headers);
ResponseEntity obj = restTemplate.exchange(url, method, entity, byte[].class);
下面這種設定有局限性
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQzM4kzN38CXn9Gbi9CXvBXaldXZo9CX0VmbuEmbph2Yz9mL512Lc9CX6MHc0RHaiojIsJye.jpg)
requestMapper.getHeaders.set(HttpHeaders.USER_AGENT,"");
為什麼有局限呢?原因就是 request對象不是 HttpServletRequest,是以沒有 request.getHeader(String) 方法。