Požadavek OkHttp nemá obecné měnitelné pole proxy. Před vytvořením volání zvolte klienta s požadovanou trasou.

Když má zbytek konfigurace zůstat sdílený, odvoďte směrovaného klienta z existujícího klienta:

OkHttpClient routed = baseClient.newBuilder()
    .proxy(new Proxy(Proxy.Type.HTTP,
        new InetSocketAddress("203.0.113.10", 8080)))
    .build();

Koncový bod je pouze ilustrativní. Veřejné koncové body HTTP ze seznamu HTTP proxy mohou tuto adresu socketu vyplnit pro povolenou trasu veřejné služby, pokud zásady základního klienta neposkytují novému koncovému bodu žádné přihlašovací údaje proxy. OkHttp dokumentuje, že newBuilder sdílí prostředky fondu připojení a vláken s původním klientem. To neznamená, že socket navázaný přes jedno proxy lze přejmenovat na jinou trasu. Způsobilost připojení stále závisí na konfiguraci trasy a adresy.

Pro opakovanou práci udržujte omezenou sadu klientů s klíči podle zásad směrování, které skutečně potřebujete. Vyhněte se neomezené mapě, jejíž klíče obsahují všechny kdy pozorované dočasné účty nebo varianty proxy.

Sdílení prostředků ovlivňuje i vypínání. Zavření sdílené mezipaměti nebo vypnutí sdíleného dispečera může ovlivnit další odvozené klienty, kteří tyto prostředky používají. Dejte vlastnictví prostředků jasnou životnost na úrovni aplikace, místo abyste s každým odvozeným klientem zacházeli jako s izolovaným síťovým zásobníkem.

Nakonec zahrňte identitu zvoleného proxy do vlastních metadat volání. Globální proměnná „naposledy zvolené proxy“ nedokáže určit trasu několika souběžných požadavků.

Související články