Lotus Web Service Consumer + Http Авторизация - Как?

nvyush

Lotus team
22.04.2009
2 317
0
#1
Здравия всем!

Возникла необходимость подключить Lotus к веб-сервису 1С. Для доступа к сервису необходима стандартная http-авторизация (в post-запрос добавить свойство "Authorization" = "Basic " + encoding, где encoding = BASE64("LOGIN:pASSWORD")). В браузере подключаюсь к серверу, прохожу авторизацию, получаю wsdl, импортирую в Lotus, получаю кучу джава кода. Внимание вопрос — куда, в какой класс, нужно вкрутить эту пару строк:
<!--shcode--><pre><code class='java'>String encoding = new sun.misc.BASE64Encoder().encode("LOGIN:pASSWORD".getBytes());
urlConnection.setRequestProperty("Authorization", "Basic " + encoding);[/CODE]
Можно было бы, конечно, написать post-запрос вызова сервиса "в ручную", но в нём много функций и не хотелось бы делать кучу лишней работы.
 

Zeka

Well-known member
01.09.2009
219
0
#2
Здравия всем!

Возникла необходимость подключить Lotus к веб-сервису 1С. Для доступа к сервису необходима стандартная http-авторизация (в post-запрос добавить свойство "Authorization" = "Basic " + encoding, где encoding = BASE64("LOGIN:pASSWORD")). В браузере подключаюсь к серверу, прохожу авторизацию, получаю wsdl, импортирую в Lotus, получаю кучу джава кода. Внимание вопрос — куда, в какой класс, нужно вкрутить эту пару строк:
<!--shcode--><pre><code class='java'>String encoding = new sun.misc.BASE64Encoder().encode("LOGIN:pASSWORD".getBytes());
urlConnection.setRequestProperty("Authorization", "Basic " + encoding);[/CODE]
Можно было бы, конечно, написать post-запрос вызова сервиса "в ручную", но в нём много функций и не хотелось бы делать кучу лишней работы.
urlConnection это java.net.URL объект. Он вроде встречается только в XXX_ServiceLocator в паре мест. Туда и пихать.

ПС: Сам не пробовал. Так, поумничать решил... :)
 

nvyush

Lotus team
22.04.2009
2 317
0
#3
urlConnectionэто java.net.URL объект.
Если бы это было так, я бы не справшивал. urlConnection это объект класса java.net.HttpURLConnection.
В сгенерированном классе XXXLocator есть функция с параметром типа java.net.URL, но это не одно и то же.
 

Zeka

Well-known member
01.09.2009
219
0
#4
Тогда ещё поумничаю... :)
А если в XXX_Stub добавить:
Код:
_call.setUsername("");
_call.setPassword("");
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
Автоподстановка в дизайнере 8.5.3 рулит! Все мои мучения помимо скудности инфы были также связаны с использованием дизайнера 8.0.1 (без автоподстановки в java).
Итого:
1) добавил в класс XXXLocator два поля:
<!--shcode--><pre><code class='java'> private final String password;
private final String userName;[/CODE]
2) переписал конструктор класса XXXLocator в виде:
<!--shcode--><pre><code class='java'> public LWSLocator(String u, String p) {
super("HttpLocalhostLotusLWS");
userName = u;
password = p;
}[/CODE]
3) добавил в методы getLWSSoap(java.net.URL portAddress) и getPort(Class serviceEndpointInterface) строки
<!--shcode--><pre><code class='java'> if (userName.length() > 0) _stub.setUsername(userName);
if (password.length() > 0) _stub.setPassword(password);[/CODE]
Спасибо Zeka за наводку
Добавлено
Другой вариант:
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/...ox_code_element
А так это выглядит на LS
http://www-10.lotus.com/ldd/nd8forum.nsf/G...55?OpenDocument
Почему IBM не потрудилась включить это в справку?