#java #web-services #ssl #axis
#java #веб-службы #ssl #axis
Вопрос:
У меня есть Java-приложение, которое использует Axis для получения данных из веб-службы. доступ к веб-службе осуществляется через HTTPS. Он отлично работает на моем локальном компьютере, но клиент использует прокси. Я добавил настройку для прокси:
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", host);
System.getProperties().put( "proxyPort", port);
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,
password.toCharArray());
}
});
но клиенты получают исключение:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
...
Кто-нибудь может здесь помочь?
Ответ №1:
System.getProperties().put( "proxySet", "true" );
Это ничего не дает. Удалить. В JDK такого свойства нет.
System.getProperties().put( "proxyHost", host);
System.getProperties().put( "proxyPort", port);
Если вы используете SSL, это должны быть https.proxyHost / https.proxyPort соответственно. Для текстовых подключений используется http.proxyHost / http.proxyPort.
Комментарии:
1. На самом деле мы пытались использовать https.proxyHost / https.proxyPort, та же ошибка. Кстати, мы используем java 1.4
Ответ №2:
Не удалось решить эту проблему. Наше приложение было переписано с использованием обычных HTTP POST-запросов (с Apache HttpClient 3.0), то есть без Axis.