Остаточный клиент java.net.ConnectException: время ожидания подключения истекло: подключение

Привет, у меня есть веб-сервис Spring Rest, развернутый в сервисе weblogic. У меня есть предварительный клиент google chrome, который отлично работает через https, который я пытаюсь создать для клиента через https Client. У меня есть сертификат CA и сертификат клиента. Я создал его по приведенной ниже ссылке Доступ к безопасным веб-сервисам с использованием веб-сервисов с использованием трикотажного клиента Но я получаю исключение ниже

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection timed out: connect
        at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
        at com.sun.jersey.api.client.Client.handle(Client.java:652)
        at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
        at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
        at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570)
        at org.app.last.JerseyClient.get_JSON(JerseyClient.java:39)
        at org.app.last.JerseyClient.main(JerseyClient.java:239)
    Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:564)
        at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
        at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:272)
        at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:329)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318)
        at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:253)
        at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:153)
        ... 6 more

person ramesh027    schedule 13.03.2014    source источник
comment
Похоже, что используемая вами конечная точка недействительна или просто не отвечает.   -  person user2793390    schedule 13.03.2014
comment
Я могу использовать эту конечную точку в клиенте Chrome Rest, который работает предварительно.   -  person ramesh027    schedule 13.03.2014
comment
Скорее всего, у вас действительно тайм-аут. Это может произойти либо из-за проблем с сетью (медленная сеть, не отвечающий сервер и т. д.). Я бы начал с проверки, попробовав этот вызов с того же клиентского компьютера на тот же сервер, а не из кода (например, браузер, если это GET или такой инструмент, как curl, если это POST или PUT)   -  person Avi    schedule 13.03.2014
comment
Я делаю пустой почтовый запрос application/json на сервер. И метод является общедоступным ‹T›T get_JSON(Class‹T› responseType, String input) throws UniformInterfaceException { return webResource.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(responseType,input); } И конечная точка отлично работает с предварительным отдыхом клиента в браузере Chrome.   -  person ramesh027    schedule 13.03.2014
comment
@ ramesh027 Возможно, ваша реализация на Java заканчивается недействительным URL-адресом. API может добавлять что-то после указанного вами URL-адреса.   -  person user2793390    schedule 13.03.2014
comment
@user2793390 user2793390 Я добавляю в запрос входную переменную, которая является StringEntity. и он отлично работает с вызовом http, но не работает с вызовом https   -  person ramesh027    schedule 13.03.2014


Ответы (4)


Похоже, у вас все еще есть проблема с прокси. а также у вас могут быть проблемы с сертификатом

  1. проверьте, правильно ли вы настраиваете прокси
  2. Проверьте, не истек ли срок действия вашего сертификата. если срок действия истек, запросите новый
  3. Проверьте с помощью скрипача, отправляете ли вы сертификат на сервер
person user3430756    schedule 17.03.2014

Проверьте настройки брандмауэра, чтобы убедиться, что исходящие порты заблокированы, кроме браузера. Иногда это происходит в зависимости от компании.

Исходящие порты по умолчанию открыты, но это могло быть изменено системными администраторами — см. это ответить.

Также соединение может быть заблокировано на уровне вашего корпоративного прокси. Например, в некоторых компаниях вы можете просматривать веб-страницы только с помощью одного браузера, а если вы устанавливаете и пытаетесь получить доступ к Интернету с помощью другого браузера, вы получаете сообщение «Разрешено просматривать Интернет только с помощью браузера XX» или тайм-аут.

Это работает, потому что прокси проверяет заголовок User-Agent.

Многие прокси требуют аутентификации и предоставляют доступ только авторизованным пользователям. Chrome автоматически вводит ваши учетные данные в какой-либо HTTP-заголовок во время серфинга, но ваша программа этого не делает.

Чтобы устранить эту проблему, попробуйте следующие возможности:

  • напечатайте URL-адрес в консоли с помощью System.out.println и убедитесь, что он точно такой же, как вы вводите в Chrome.

  • используйте утилиту командной строки без браузера, такую ​​​​как curl или wget, чтобы проверить, можете ли вы получить доступ, например, к google, а также к конечной точке

  • проверьте настройки брандмауэра

person Angular University    schedule 13.03.2014
comment
Я пытался использовать прокси-соединение, хотя получаю следующую ошибку Exception in thread main com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Время ожидания соединения истекло: подключение к com.sun.jersey.client. urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155) в com.sun.jersey.api.client.Client.handle(Client.java:652) в com.sun.jersey.api.client.WebResource.handle(WebResource. java:682) по адресу com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) по адресу - person ramesh027; 17.03.2014
comment
Я работал над игнорированием ssl, он работал, но не работал с ssl - person ramesh027; 17.03.2014
comment
Я публикую вопрос в другом вопросе stackoverflow.com/questions/22452079/ - person ramesh027; 17.03.2014

Это не проблема с сертификатом, иначе вы бы увидели ошибки SSL. Проверьте настройки прокси. В приложениях Spring вы можете добавить следующие аргументы виртуальной машины для установки прокси-сервера: -Dhttp.proxyHost=your.proxy.net -Dhttp.proxyPort=8080

person henqdev    schedule 13.01.2021

Добавьте свойство ниже в файл application.properies в серверном приложении eureka:

eureka.server.peer-node-read-timeout-ms=6000

Если это не сработает, попробуйте увеличить время чтения.

Это работает в моем случае.

person Guru    schedule 30.01.2021