本文是精講RestTemplate第10篇,前篇的blog訪問地址如下:
- 精講RestTemplate第1篇-在Spring或非Spring環境下如何使用
- 精講RestTemplate第2篇-多種底層HTTP客戶端類別庫的切換
- 精講RestTemplate第3篇-GET請求使用方法詳解
- 精講RestTemplate第4篇-POST請求方法使用詳解
- 精講RestTemplate第5篇-DELETE、PUT等請求方法使用詳解
- 精講RestTemplate第6篇-檔案上傳下載與大檔案流式下載
- 精講RestTemplate第7篇-自定義請求失敗例外處理
- 精講RestTemplate第8篇-請求失敗自動重試機制
- 精講RestTemplate第9篇-如何通過HTTP Basic Auth認證
本節我們要為大家介紹一下,如何在使用RestTemplate發送請求的時候使用代理Proxy,至于為什么要使用代理,給大家舉一個簡單的例子:一些做過爬蟲的同學可能都知道,當爬蟲高頻的多次訪問一個網站資料,可能導致請求客戶端Ip被封鎖的可能,很多情況下,做爬蟲的企業就維護一個代理IP池,每發送一次請求,就更換一次IP,
代理Proxy作為跳板成為服務的直接訪問者,代理使用者(真正的客戶端)是間接訪問服務,這樣在服務端看來,每次請求是代理發出的,從代理IP池中一直更換代理發送請求,這樣能夠降低IP封鎖的可能,

我們本節就來為大家介紹,作為一個代理使用者,該如何使用RestTemplate發送請求的時候使用代理Proxy,
一、搭建一個代理服務器
筆者只從知識的層面去講解使用方法,所以不做蠅營狗茍的勾當,代理服務器還是由我自己來搭建用來測驗,在我的一個CentOS服務器上安裝tinyproxy,tinyproxy可以提供代理服務,
# 安裝tinyproxy 命令
sudo yum install tinyproxy -y
編輯tinyproxy的組態檔vim /etc/tinyproxy/tinyproxy.conf,為該代理配置允許訪問的使用者客戶端ip,也就是我家的ip,所以這個代理服務只能我用,其他人用不了,
# 代理服務埠
Port 1080
# 允許哪個客戶端使用該代理程式?
Allow xxx.xxx.xxx.xxx
啟動tinyproxy提供代理服務,最好檢查一下防火墻是否開放了1080埠,
systemctl start tinyproxy.service
二、用于測驗的服務端
- 我們這次要訪問的服務端是:
http://www.httpbin.org, 這個網站是提供在線的HTTP訪問服務的網站,我們可以用它進行測驗, http://www.httpbin.org/ip是我們本次要訪問的服務,回應結果是訪問者的IP,
我在家里使用電腦訪問這個服務的時候結果如下:

上圖沒有使用代理,所以回傳的是我家的ip,如果我使用代理訪問,回傳結果應該是proxy代理服務器的ip地址,
三、代理使用者RestTemplate
我的第一小節中的代理服務器的ip是88.99.10.251,tinyproxy代理服務埠1080,下文代碼通過SimpleClientHttpRequestFactory設定訪問代理
@SpringBootTest
class ProxyTests {
@Resource
private RestTemplate restTemplate;
@Test
void testProxyIp() {
String url = "http://www.httpbin.org/ip";
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setProxy(
new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("88.99.10.251", 1080) //設定代理服務
)
);
restTemplate.setRequestFactory(requestFactory);
//發送請求
String result = restTemplate.getForObject(url, String.class);
System.out.println(result); //列印回應結果
}
}
代理型別可以是HTTP也可以是SOCKS,下圖是 "http://www.httpbin.org/ip" 的請求回應結果,回傳的是代理服務器的ip,而不是我家里的ip,說明我們為RestTemplate 設定的代理生效了,

歡迎關注我的博客,里面有很多精品合集
- 本文轉載注明出處(必須帶連接,不能只轉文字):字母哥博客,
覺得對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創作動力! ,另外,筆者最近一段時間輸出了如下的精品內容,期待您的關注,
- 《手摸手教你學Spring Boot2.0》
- 《Spring Security-JWT-OAuth2一本通》
- 《實戰前后端分離RBAC權限管理系統》
- 《實戰SpringCloud微服務從青銅到王者》
- 《VUE深入淺出系列》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71657.html
標籤:Java
上一篇:SpringBoot整合Redis、mybatis實戰,封裝RedisUtils工具類,redis快取mybatis資料 附原始碼
