Apache httpclient не соблюдает настройки прокси с помощью setProxy - PullRequest
1 голос
/ 20 марта 2020

Вот так выглядит мой код.

val proxyHost = new HttpHost("myProxyHost.com", 8080, "https")

val httpClient = HttpClients.custom
  .useSystemProperties()
  .setConnectionManager(new PoolingHttpClientConnectionManager)
  .setRedirectStrategy(TrackingRedirectStrategy)
  .setProxy(proxyHost)
  .build()

val httpContext = new BasicHttpContext
val httpGet = new HttpGet(uri.toASCIIString)
val response = httpClient.execute(httpGet, httpContext)

Но запрос по-прежнему выполняется без использования прокси-сервера myProxyHost.com. Я не понимаю, что я делаю неправильно или где моя конфигурация setProxy перезаписывается.

(Это код scala, использующий стандартную библиотеку apache httpclient.)

1 Ответ

0 голосов
/ 27 марта 2020

Я запустил ваш код, используя фиктивный прокси-сервер httpServer, который всегда возвращает строковую константу. Разница лишь в том, что я использовал другую стратегию перенаправления. Кажется, все в порядке.

class SimpleHttpServer extends Thread {

  private val threadPoolExecutor: ExecutorService = Executors.newFixedThreadPool(10)
  private val server = HttpServer.create(new InetSocketAddress("localhost", 8001), 0);

  server.createContext("/", new DefaultHandler());
  server.setExecutor(threadPoolExecutor);

  override def run(): Unit = {
    server.start()
  }

}

class DefaultHandler extends HttpHandler {
  override def handle(httpExchange: HttpExchange): Unit = {
    httpExchange.sendResponseHeaders(200, 5)
    httpExchange.getResponseBody.write("hello".getBytes())
    httpExchange.getResponseBody.flush()
    httpExchange.getResponseBody.close()
  }
}

object SimpleHttpServer extends InputReader {
  def main(args: Array[String]): Unit = {
    val server = new SimpleHttpServer
    server.start()

    val proxyHost = new HttpHost("localhost", 8001, "http")

    val httpClient = HttpClients.custom
      .useSystemProperties()
      .setConnectionManager(new PoolingHttpClientConnectionManager)
      .setRedirectStrategy(LaxRedirectStrategy.INSTANCE)
      .setProxy(proxyHost)
      .build()

    val httpContext = new BasicHttpContext
    val httpGet = new HttpGet("http://www.google.com")
    val response = httpClient.execute(httpGet, httpContext)

    println(readRecur(response.getEntity.getContent))

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...