SpringBoot設(shè)置HTTP代理訪問
遇到這樣的一個場景,代碼部署到私有服務(wù)器上去之后,這臺私有服務(wù)器a無法直接訪問公網(wǎng),需要通過代理轉(zhuǎn)發(fā)到另外一臺專門訪問公網(wǎng)的服務(wù)器b, 讓服務(wù)器b去請求對應(yīng)的公網(wǎng)ip,于是就需要設(shè)置Http代理。
通常使用springboot會用到兩種不同的httpclient
- spring-boot-starter-webflux 這個包下面的WebClient
- Spring-web 這個包下面的RestTemplate
WebClient
通過設(shè)置Httpclinet添加綁定的代理地址,然后給WebClient里添加這個Httpclient
HttpClient httpClient = HttpClient.create()
.proxy(proxy -> proxy
.type(ProxyProvider.Proxy.HTTP)
.address(new InetSocketAddress("192.168.0.1", 8080)) // 你的代理IP和端口
);
?
WebClient webClient = webClientBuilder
.baseUrl("https://www.baidu.com")
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
?
?
String result = webClient.get()
.retrieve()
.bodyToMono(String.class)
.block();RestTemplate
// 服務(wù)器代理
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.0.1", 8080));
// 配置 request factory
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setProxy(proxy);
?
RestTemplate restTemplate = new RestTemplate();
ProxySetting proxySetting = SpringContextHolder.getBean(ProxySetting.class);
// This allows us to read the response more than once - Necessary for debugging.
// 如果開啟代理,則配置走服務(wù)器代理。否則走本地調(diào)試
if (proxySetting.isEnable()) {
restTemplate.setRequestFactory(requestFactory);
} else {
restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
}
?
DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory(); uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
restTemplate.setUriTemplateHandler(uriBuilderFactory);
?
String url = "https://www.baidu.com"
String response = restTemplate.getForObject(url, String.class);到此這篇關(guān)于SpringBoot設(shè)置HTTP代理訪問的文章就介紹到這了,更多相關(guān)SpringBoot設(shè)置HTTP代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA失焦自動重啟服務(wù)的解決方法
在使用 IntelliJ IDEA運行 SpringBoot 項目時,你可能會遇到一個令人困擾的問題,一旦你的鼠標(biāo)指針離開當(dāng)前IDE窗口,點擊其他位置時, IDE 窗口會失去焦點,你的 SpringBoot 服務(wù)就會自動重啟,所以本文給大家介紹了IntelliJ IDEA失焦自動重啟服務(wù)的解決方法2023-10-10
springsecurity實現(xiàn)登錄驗證以及根據(jù)用戶身份跳轉(zhuǎn)不同頁面
Spring?Security是一種基于Spring框架的安全技術(shù),用于實現(xiàn)身份驗證和訪問控制,本文介紹了如何使用Spring?Security,結(jié)合session和redis來存儲用戶信息,并通過編寫特定的登錄處理類和Web配置,實現(xiàn)用戶登錄和注銷功能2024-09-09

