本文是精講RestTemplate第10篇,前篇的blog訪問地址以下:html
本節咱們要爲你們介紹一下,如何在使用RestTemplate發送請求的時候使用代理Proxy。至於爲何要使用代理,給你們舉一個簡單的例子:一些作過爬蟲的同窗可能都知道,當爬蟲高頻的屢次訪問一個網站數據,可能致使請求客戶端Ip被封鎖的可能。不少狀況下,作爬蟲的企業就維護一個代理IP池,每發送一次請求,就更換一次IP。
代理Proxy做爲跳板成爲服務的直接訪問者,代理使用者(真正的客戶端)是間接訪問服務。這樣在服務端看來,每次請求是代理髮出的,從代理IP池中一直更換代理髮送請求,這樣可以下降IP封鎖的可能。vue
咱們本節就來爲你們介紹,做爲一個代理使用者,該如何使用RestTemplate發送請求的時候使用代理Proxy。java
筆者只從知識的層面去講解使用方法,因此不作蠅營狗苟的勾當。代理服務器仍是由我本身來搭建用來測試,在個人一個CentOS服務器上安裝tinyproxy,tinyproxy能夠提供代理服務。spring
# 安裝tinyproxy 命令 sudo yum install tinyproxy -y
編輯tinyproxy的配置文件vim /etc/tinyproxy/tinyproxy.conf
。爲該代理配置容許訪問的使用者客戶端ip,也就是我家的ip,因此這個代理服務只能我用,其餘人用不了。vim
# 代理服務端口 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地址。springboot
個人第一小節中的代理服務器的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 設置的代理生效了。前後端分離
以爲對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創做動力! 。另外,筆者最近一段時間輸出了以下的精品內容,期待您的關注。微服務