簡體   English   中英

在不構建新的 HTTP 客戶端的情況下更改 Java 的原生 HTTP 客戶端的代理

[英]Changing Java's Native HTTP Client's proxy without building a new HTTP Client

我有一個無限循環的刮刀,我想更改客戶端上的代理,以防出現 IP 禁止(在 403 狀態代碼上)之類的問題,或者如果我只想在每次循環后更改代理以避免禁止完全地。

與此有關的問題,特別是后一種情況,是程序在達到允許的最大連接數時最終崩潰(java.net.SocketException:沒有可用的緩沖區空間(已達到最大連接數?))。

有沒有辦法在不構建新代理的情況下更改 HTTP 客戶端的代理?

有沒有辦法在不構建新代理的情況下更改 HTTP 客戶端的代理?

我假設您在談論 JDK 11(及更高版本) java.net.http.HttpClient API。

javadoc是這樣說的:

HttpClient可用於發送請求並檢索其響應。 HttpClient是通過構建器創建的。 構建器可用於配置每個客戶端的狀態,例如:首選協議版本(HTTP/1.1 或 HTTP/2)、是否遵循重定向、代理、身份驗證器等。一旦構建, HttpClient是不可變的,並且可用於發送多個請求。

我的理解是你不能改變代理; 即您不能替換客戶端的ProxySelector對象。

但是, ProxySelector ( javadoc ) 是一個抽象類,您可以創建自己的自定義子類,允許您通過許多不同的代理進行循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM