欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用feign配置網(wǎng)絡(luò)ip代理

 更新時(shí)間:2022年06月30日 08:40:06   作者:coder@  
這篇文章主要介紹了使用feign配置網(wǎng)絡(luò)ip代理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

feign配置網(wǎng)絡(luò)ip代理

問(wèn)題描述

測(cè)試環(huán)境將需要訪問(wèn)的外網(wǎng)地址加入了白名單,但是docker和宿主機(jī)網(wǎng)絡(luò)不一樣(試過(guò)掛載宿主機(jī)網(wǎng)絡(luò)也不行,但是掛載宿主機(jī)網(wǎng)絡(luò)會(huì)打亂原有的網(wǎng)絡(luò)環(huán)境),所以造成了在宿主機(jī)上面可以訪問(wèn)該地址,但是docker里面是訪問(wèn)不到外網(wǎng)的地址,所使用feign的時(shí)候加上ip代理,代理宿主機(jī)ip來(lái)對(duì)外網(wǎng)地址進(jìn)行訪問(wèn)!

為什么不直接對(duì)docker設(shè)置網(wǎng)絡(luò)代理,測(cè)試環(huán)境里面基本都是內(nèi)部服務(wù)調(diào)用,如果設(shè)置則會(huì)導(dǎo)致其網(wǎng)絡(luò)不一致,并且開(kāi)發(fā)測(cè)試正式環(huán)境較為復(fù)雜,如果不需要的時(shí)候直接在配置文件配置為null就行

1.依賴(lài)

<dependency>
? ? <groupId>org.apache.httpcomponents</groupId>
? ? <artifactId>httpclient</artifactId>
? ? <version>4.5.10</version>
</dependency>
<dependency>
? ? ?<groupId>io.github.openfeign</groupId>
? ? ? <artifactId>feign-okhttp</artifactId>
</dependency>
//可能還需要feign相關(guān)依賴(lài) feign-okhttp主要用來(lái)做網(wǎng)絡(luò)代理,依賴(lài)需要自行百度

2.feignclinet接口

import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
?* @ClassName?
?* @Description url遠(yuǎn)程調(diào)用的url
?* @Author liuf
?* @Date 2021/10/29 16:19
?* @Version 1.0
?**/
@FeignClient(url = "http://xxx.xxx.xxx.xxx:8090" ,name = "slmodel-one")
public interface SlModelOneClient {
? ? @ApiOperation("XXXXXXX")
? ? @RequestMapping(
? ? ? ? ? ? method = RequestMethod.GET,
? ? ? ? ? ? value = "/efdcserver/efdcserver/getEfdcCodeByProjectName",
? ? ? ? ? ? consumes = "application/json;charset=UTF-8",
? ? ? ? ? ? produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
? ? List<JsonAreaCode> getEfdcCodeByProjectName(
? ? ? ? ? ? @RequestParam("projectName") String projectName);
? ? @ApiOperation("XXXXXXX")
? ? @RequestMapping(
? ? ? ? ? ? method = RequestMethod.POST,
? ? ? ? ? ? value = "/efdcserver/hydro/getDepthMapByPost?efdcCode={efdcCode}&planName={planName}",
? ? ? ? ? ? consumes = "application/json;charset=UTF-8",
? ? ? ? ? ? produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
? ? DepthMap getDepthMapByPost(
? ? ? ? ? ? @PathVariable(name="efdcCode") String efdcCode,
? ? ? ? ? ? @PathVariable(name ="planName")String planName);
? ? @ApiOperation("XXXXXXX")
? ? @RequestMapping(
? ? ? ? ? ? method = RequestMethod.GET,
? ? ? ? ? ? value = "/efdcserver/hydro/getPoint?planName={planName}&efdcCode={efdcCode}&lgtd={lgtd}&lttd={lttd}",
? ? ? ? ? ? consumes = "application/json;charset=UTF-8",
? ? ? ? ? ? produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
? ? DepthMap getPointDepthByGet(
? ? ? ? ? ? @PathVariable(name ="planName")String planName,
? ? ? ? ? ? @PathVariable(name="efdcCode") String efdcCode ,
? ? ? ? ? ? @PathVariable(name ="lotd")Double lgtd,
? ? ? ? ? ? @PathVariable(name ="lttd")Double lttd);
}

3.Config

import okhttp3.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.commons.httpclient.DefaultOkHttpClientFactory;
import org.springframework.cloud.commons.httpclient.OkHttpClientFactory;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.net.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/**
?* @Description: feign代理設(shè)置
?* @Author: liuf
?* @Date:
?* @Param:
?* @Return:
?**/
@Configuration
@EnableFeignClients(basePackages = "com.ceshi..map.client")
public class Config {
? ? @Value("${proxy.host}")
? ? private String proxyHost;
? ? @Value("${proxy.port}")
? ? private Integer proxyPort;
? ? @Value("#{'${proxy.domains}'.split(',')}")
? ? private Set<String> domainList;
? ? @Bean
? ? public OkHttpClientFactory okHttpClientFactory(OkHttpClient.Builder builder) {
? ? ? ? return new ProxyOkHttpClientFactory(builder);
? ? }
? ? class ProxyOkHttpClientFactory extends DefaultOkHttpClientFactory {
? ? ? ? public ProxyOkHttpClientFactory(OkHttpClient.Builder builder) {
? ? ? ? ? ? super(builder);
? ? ? ? ? ? //如果配置文件中的代理信息為null 則該代理ip配置不生效
? ? ? ? ? ? if(proxyHost!=null&&proxyPort!=null&&domainList!=null) {
? ? ? ? ? ? ? ? Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
? ? ? ? ? ? ? ? List<Proxy> proxyList = new ArrayList<>(1);
? ? ? ? ? ? ? ? proxyList.add(proxy);
? ? ? ? ? ? ? ? builder.proxySelector(new ProxySelector() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public List<Proxy> select(URI uri) {
? ? ? ? ? ? ? ? ? ? ? ? if (uri == null || !domainList.contains(uri.getHost())) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? return Collections.singletonList(Proxy.NO_PROXY);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? return proxyList;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

4.yml

使用IP代理

feign:
?okhttp:
? enabled: true
proxy:
?host: 199.168.233.32 //需要代理的ip
?port: 4444
?domains: 222.222.231.116,222.222.231.117 //需要訪問(wèn)的地址 host 如果多個(gè) 用逗號(hào)分割

不使用IP代理

feign:
?okhttp:
? enabled: true
proxy:
?host: null
?port: null
?domains: null

調(diào)用指定ip的feign接口

@FeignClient(value = “center-educational-server”,url=“http://127.0.0.1:10005”)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無(wú)效問(wèn)題

    解決IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無(wú)效問(wèn)題

    這篇文章主要介紹了關(guān)于IDEA中Maven項(xiàng)目中JSTL標(biāo)簽無(wú)效問(wèn)題的解決方法,需要的朋友可以參考下
    2018-09-09
  • java volatile關(guān)鍵字作用及使用場(chǎng)景詳解

    java volatile關(guān)鍵字作用及使用場(chǎng)景詳解

    在本文里我們給大家分享的是關(guān)于java volatile關(guān)鍵字作用及使用場(chǎng)景的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-08-08
  • Java中String.split()的最詳細(xì)源碼解讀及注意事項(xiàng)

    Java中String.split()的最詳細(xì)源碼解讀及注意事項(xiàng)

    以前經(jīng)常使用String.split()方法,但是從來(lái)沒(méi)有注意,下面這篇文章主要給大家介紹了關(guān)于Java中String.split()最詳細(xì)源碼解讀及注意事項(xiàng)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • JAVA如何獲取工程下的文件

    JAVA如何獲取工程下的文件

    這篇文章主要介紹了JAVA如何獲取工程下的文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • public?static?void?main(String[]?args)使用解讀

    public?static?void?main(String[]?args)使用解讀

    這篇文章主要介紹了public?static?void?main(String[]?args)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • activemq整合springboot使用方法(個(gè)人微信小程序用)

    activemq整合springboot使用方法(個(gè)人微信小程序用)

    這篇文章主要介紹了activemq整合springboot使用(個(gè)人微信小程序用),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring?cloud?OpenFeign中動(dòng)態(tài)URl、動(dòng)態(tài)傳遞接口地址代碼示例

    Spring?cloud?OpenFeign中動(dòng)態(tài)URl、動(dòng)態(tài)傳遞接口地址代碼示例

    openFeign是作為微服務(wù)之間調(diào)用的解決方案,每個(gè)微服務(wù)項(xiàng)目是必不可少的,下面這篇文章主要給大家介紹了關(guān)于Spring?cloud?OpenFeign中動(dòng)態(tài)URl、動(dòng)態(tài)傳遞接口地址的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • java實(shí)現(xiàn)馬踏棋盤(pán)游戲

    java實(shí)現(xiàn)馬踏棋盤(pán)游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)馬踏棋盤(pán)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java 超詳細(xì)講解異常的處理

    Java 超詳細(xì)講解異常的處理

    異常就是不正常,比如當(dāng)我們身體出現(xiàn)了異常我們會(huì)根據(jù)身體情況選擇喝開(kāi)水、吃藥、看病、等 異常處理方法。 java異常處理機(jī)制是我們java語(yǔ)言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力,程序出現(xiàn)的錯(cuò)誤,程序可以安全的退出,以保證程序正常的運(yùn)行等
    2022-04-04
  • Java精品項(xiàng)目瑞吉外賣(mài)之后端登錄功能篇

    Java精品項(xiàng)目瑞吉外賣(mài)之后端登錄功能篇

    這篇文章主要為大家詳細(xì)介紹了java精品項(xiàng)目-瑞吉外賣(mài)訂餐系統(tǒng),此項(xiàng)目過(guò)大,分為多章獨(dú)立講解,本篇內(nèi)容為后端登錄功能的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論