Добавить прокси для перезапуска ClientRessource - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь добавить настройки прокси-сервера в клиентское приложение Java Swing, которое подключается и получает данные через https от внешнего сервера. Однако ClientResource (restlet: 2.4.0) игнорирует все усилия с параметрами и подключается непосредственно к URL? Если синтаксис правильный, каковы правильные параметры? Далее, как я могу использовать системные настройки прокси?

private static ClientResource getClientResource(String url) {

    ClientResource clientResource = null;

    try {
        // test
        Client client = new Client(new Context(), Protocol.HTTPS);
        client.getContext().getParameters().add("https.proxyHost", "PROXY_IP");
        client.getContext().getParameters().add("https.proxyPort", "PROXY_PORT");

        clientResource = new ClientResource(url);

        // test
        clientResource.setNext(client);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return clientResource;
}


private static Response sendGetRequest(String url) {
    ClientResource resource = getClientResource(BASE_URL + url);

    try {
        resource.get();
    } catch (ResourceException e){
        e.printStackStrace();
        return null;
    }
    return getResponse();
}

РЕДАКТИРОВАТЬ добавленные компиляции:

compile 'org.restlet.jse:org.restlet:2.3.12'
compile 'org.restlet.jse:org.restlet.ext.jackson:2.3.12'
// switch to Apache Http Client, enable proxy'
compile 'org.restlet.jse:org.restlet.ext.httpclient:2.3.12' 
// httpClient for Class Definitions
compile 'org.apache.httpcomponents:httpclient:4.3' 

ТЕКУЩЕЕ ИСКЛЮЧЕНИЕ:

Starting the Apache HTTP client
An error occurred during the communication with the remote HTTP server.

org.apache.http.client.ClientProtocolException
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:867)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
    at org.restlet.ext.httpclient.internal.HttpMethodCall.sendRequest(HttpMethodCall.java:339)
    at org.restlet.engine.adapter.ClientAdapter.commit(ClientAdapter.java:105)
    at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:119)
    at org.restlet.Client.handle(Client.java:153)

1 Ответ

0 голосов
/ 13 июня 2018

Я думаю, что это поддерживается только с расширением httpClient, которое опирается на клиентскую библиотеку Apache HTTP (идентификатор артефакта maven: org.restlet.ext.httpclient).

Затем можно использовать свойства системной среды: http.proxyHost и http.proxyPort или установить эти параметры на экземпляре клиента (как вы это сделали, но имена различны и задокументированы здесь ).

Client client = new Client(new Context(), Protocol.HTTPS);
client.getContext().getParameters().add("proxyHost", "PROXY_IP");
client.getContext().getParameters().add("proxyPort", "PROXY_PORT");
...