Jetty HTTP Client с SSL - PullRequest
       5

Jetty HTTP Client с SSL

1 голос
/ 16 июня 2009

Я следую примеру Jetty HttpClient , но мне не удается установить соединение SSL. Когда я подключаюсь через прокси-сервер, возникает исключение «Не реализовано». Когда я не использую прокси, он ничего не возвращает.

HttpClient client = new HttpClient();
client.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
client.setProxy(new Address("www.example.com", 80));
client.start();

// create the exchange object, which lets you define where you want to go
// and what you want to do once you get a response
ContentExchange exchange = new ContentExchange()
{
  // define the callback method to process the response when you get it
  // back
  protected void onResponseComplete() throws IOException
  {
    super.onResponseComplete();
    String responseContent = this.getResponseContent();

    // do something with the response content
    System.out.println(responseContent);
  }
};

exchange.setMethod("GET");
exchange.setURL("https://www.example.com");
exchange.setScheme(HttpSchemes.HTTPS_BUFFER);

// start the exchange
client.send(exchange);
exchange.waitForDone();
System.err.println("Response status: " + exchange.getResponseStatus());

Ответы [ 3 ]

2 голосов
/ 22 июня 2011

Jetty v7.4.1:

if (dest.isSecure()) {
    if (dest.isProxied()) {
        SSLEngine engine=newSslEngine(channel); ep = new ProxySelectChannelEndPoint(channel, selectSet, key, _sslBuffers, engine, (int)_httpClient.getIdleTimeout());
    } else { ...
1 голос
/ 12 октября 2010

попробуйте ProxyHandler (jetty 7), который обрабатывает команду connect для туннелирования https-соединения (через прокси)

1 голос
/ 16 июня 2009

Да, странно, исходный код SelectConnector для Jetty-Client выглядит следующим образом:

 if (dest.isProxied()) {
    String connect = HttpMethods.CONNECT+" "+dest.getAddress()+HttpVersions.HTTP_1_0+"\r\n\r\n";
    // TODO need to send this over channel unencrypted and setup endpoint to ignore the 200 OK response.    
    throw new IllegalStateException("Not Implemented");
 }

так что функциональности в настоящее время не существует - по крайней мере, в версии, которую я использую (6.1.16) для использования прокси-сервера таким способом То же самое относится и к версии Milestone Jetty 7 (которую я нашел после загрузки исходного кода).

Я предлагаю вам попробовать другой клиент - проверьте Apache HttpClient:

http://hc.apache.org/httpclient-3.x/

Разработчики Jetty должны были четко обозначить это в Javadocs. другая альтернатива - реализовать их для реализации этой функции и отправить ее обратно в виде патча.

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