• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Доступ к веб-сервису через Https

nvyush

Lotus team
22.04.2009
2 317
0
#21
Коллеги по моему чот много-много написали... Чтоб не парится с формами авторизации вебсервисов у домино есть такая штука - Override Session Authentication... как раз для него и под RSS заточено..
У нас нет интернет-сайтов. Соответственно, и правило типа "Override Session Authentication" создавать не к чему :unsure:.
 

rinsk

Lotus team
12.11.2009
904
44
#22
У нас нет интернет-сайтов. Соответственно, и правило типа "Override Session Authentication" создавать не к чему :unsure:.
А что мешает сделать дефолтовый?? оно каши не просит и разницы там большой нет...

эт жесть... заставлять клиентов веб-сервиса заниматься извратом и препарировать формочки авторизации...
 
P

Positive

#23
Добрый день.

Подскажите, а что поправили после ошибки этой

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server.generalException</faultcode> <faultstring>java.lang.NullPointerException</faultstring> <detail/> </soapenv:Fault> </soapenv:Body></soapenv:Envelope>


И каков смысл этого вызова: String res = domino.doPost( "/replicaId/_/unid" , "" ); ?
Точнее, если так будет: String res = domino.doPost( "/Test.nsf/TestMailBox?WDSL" , "SendMessage" ); это верный вызов или нет, если функция в вебсервисе называется SendMessage
 

nvyush

Lotus team
22.04.2009
2 317
0
#24
Positive
Итог изысканий тут: http://codeby.net/ipb.html?s=&sh...st&p=171404. Запускал под NetBeans.
Ошибка была в структуре запроса, запрос не соответствовал wsdl.
Смысл строк:
Код:
 //создаём объект DominoHTTPConnection (соединение с узлом "http://domino.acme.com", используя "login" и "password"
DominoHTTPConnection domino = new DominoHTTPConnection( "http://domino.acme.com" , "login" , "password" ); 
//отправка на url http://domino.acme.com/replicaId/_/unid запроса ""
String res = domino.doPost( "/replicaId/_/unid" , "" );
Для вызова веб-сервиса необходимо сформировать запрос в соответствии с wsdl. Выглядеть он будет примерно так:
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<soapenv:Body>
<SendMessage xmlns='urn:DefaultNamespace'>
<testString>
VALUE-OF-TEST-STRING
</testString>
</SendMessage>
</soapenv:Body>
</soapenv:Envelope>

url запроса должна заканчиваться именем веб-сервиса
 
P

Positive

#25
nvy Благодарю

однако, так и не могу заставить до конца работать

Сформировал Soap запрос, из проводника веб-служб Rational (в нем без авторизации тест вебсервиса проходит).
Получился он такой:

<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns0:SENDMESSAGE
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns0="urn:DefaultNamespace">
</ns0:SENDMESSAGE>
</soapenv:Body>
</soapenv:Envelope>


преобразовал в строку, для java

и вот что получается на выходе:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<soapenv:Upgrade soapenv:mustUnderstand="0">
<soapenv:SupportedEnvelope qname="soapenv:Envelope"/>
</soapenv:Upgrade>
</soapenv:Header>
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:VersionMismatch</faultcode>
<faultstring>Version Mismatch</faultstring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>


Ошибки http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383496 , http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383500

Как бы их исправить
 
P

Positive

#26
Ура
Прошел отладчиком, оказалось ошибся с переводом строки когда формировал запрос на java.

Спасибо ;)

Добавлено: А вот еще бы сделать пересылку файлов с помощью вебсервиса.

Пока информацию особо не гуглил, может на форуме поднималась такая тема?
 

nvyush

Lotus team
22.04.2009
2 317
0
#27
Для тестирования использовал в Лотусовой базе примитивный веб-сервис, который возвращает полученную строку:
Код:
public class TestService {
public java.lang.String getTestString(java.lang.String testString) {
return testString;
}
}
"Дёргал" его из NetBeans вышеприведённым кодом. Дальше пока не пошёл по независящим от меня причинам.

Добавлено:
Добавлено: А вот еще бы сделать пересылку файлов с помощью вебсервиса.

Пока информацию особо не гуглил, может на форуме поднималась такая тема?
Ну вот же недавно поднимался вопрос, ещё даже на вторую страницу не "уехал":
Втянуть файл через Web-сервис в базу. Можно ли?
 
P

Positive

#28
Ок, спасибо.

P.S. Эмм...не слежу за форумом. По разным причинам сейчас редко заглядываю на форумы, и в плане развития тоже тормознулся. Рейтинг Вам надо накинуть ;)
 
K
#29
Positive
Итог изысканий тут: http://codeby.net/ipb.html?s=&sh...st&p=171404. Запускал под NetBeans.
Ошибка была в структуре запроса, запрос не соответствовал wsdl.
Смысл строк:
Код:
 //создаём объект DominoHTTPConnection (соединение с узлом "http://domino.acme.com", используя "login" и "password"
DominoHTTPConnection domino = new DominoHTTPConnection( "http://domino.acme.com" , "login" , "password" ); 
//отправка на url http://domino.acme.com/replicaId/_/unid запроса ""
String res = domino.doPost( "/replicaId/_/unid" , "" );
Для вызова веб-сервиса необходимо сформировать запрос в соответствии с wsdl. Выглядеть он будет примерно так:
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<soapenv:Body>
<SendMessage xmlns='urn:DefaultNamespace'>
<testString>
VALUE-OF-TEST-STRING
</testString>
</SendMessage>
</soapenv:Body>
</soapenv:Envelope>

url запроса должна заканчиваться именем веб-сервиса
Добрый день, а у меня сервер не возвращает Set-Cookie

Причём я вижу что в браузер возвращает, а мне нет
Заголовки ответа

HTTP/1.1 302 Found
Server: Lotus-Domino
Date: Thu, 24 Mar 2011 09:07:27 GMT
Connection: close
Location: http://192.168.139.107/WebAccessRedirect650.nsf
Set-Cookie: DomAuthSessId=0923041F795A0BDE8EECE625C57E064B; path=/


Заголовки запроса

POST /names.nsf?Login HTTP/1.1
Host: 192.168.139.107
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://192.168.139.107/

А у меня отвечает только:

HTTP/1.1 200 OK
Cache-control : no-cache
Server : Lotus-Domino
Expires : Tue, 01 Jan 1980 06:00:00 GMT
Content-Length : 1366
Date : Thu, 24 Mar 2011 09:39:02 GMT
Content-Type : text/html; charset=UTF-8
 
13.03.2009
625
1
#30
Добрый день, а у меня сервер не возвращает Set-Cookie
Причём я вижу что в браузер возвращает, а мне нет
вы привели один запрос(request) и два ответа(response). где ваш-то запрос?

играть в угадайку не очень хочется, но предположу, что вы не передаете(передаете неверный) логин-пароль и сервер вам отдает форму авторизации...
поставьте снифер, снимите трафик от вас и от браузера - поймете в чем разница.
 
K
#31
вы привели один запрос(request) и два ответа(response). где ваш-то запрос?

играть в угадайку не очень хочется, но предположу, что вы не передаете(передаете неверный) логин-пароль и сервер вам отдает форму авторизации...
поставьте снифер, снимите трафик от вас и от браузера - поймете в чем разница.
Спасибо. Решено.

Было два пункта:
1. Ответ разбивался на два ответа, один с 100, а другой с ответом.
2. DefaultHttpClient после получения ответа на Post сам сразу делал Get, поэтому куки нужно вытаскивать не в лоб.
 
Вверх Снизу