restTemplate 403的问题

原创
2020/10/16 09:39
阅读数 1.4W

如果你用springboot的restTemplate 访问接口时,如果报403,而且你确定url没有问题的话,那就是网站把你的请求屏蔽了。

解决的方法也很简单,修改请求头部的User-Agent就可以了。

GET请求

如果不用携带头部的话,最简单的方式是使用getForObject方法,如果要自定义头部的话,这个方法不能用,需要如下:

        try {
            SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();

            requestFactory.setConnectTimeout(5000);
            requestFactory.setReadTimeout(5000);
            HttpHeaders headers = new HttpHeaders();
            headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
            HttpEntity<Resource> httpEntity = new HttpEntity<>(headers);

            RestTemplate restTemplate = new RestTemplate(requestFactory);
            ResponseEntity<JSONObject> resp = restTemplate.exchange(url, HttpMethod.GET, httpEntity, JSONObject.class);
            JSONObject ts = resp.getBody();
	} catch (Exception e) {
           e.printStackTrace();
        }

POST请求

与上面的基本相同,不过是使用postForObject方法。

ResponseEntity<JSONObject> resp = restTemplate.postForObject(url, requestEntity, JSONObject.class);

说实话,这些接口很不易用,很不直观,比其他语言的差多了。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部