• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

SOAP Запрос js - никак...

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
Добрый день! На своем Lotus сервере в одной из баз соорудил web service на lotusscript. Испытал его в клиентской форме на кнопках - работает отлично.
Решил попробовать как этот web service будет общаться из xPage. Нарисовал xPage форму, настругал туда полей и кнопок. На кнопку повесил программку, которая отправляет SOAP запрос сервису.
Но вот ничего не получается. Простенькие программки на js для xPage писал, как говорится, с учебника.
Результат работы программы запроса - "Error 500" и никакоих подробностей.
Помогите написать работающий код!

вот мои переменные:
Код:
var login = 'userkwk';
var pass = 'user123';
var uuser = 'geograph'
var url = 'http://10.12.12.56:8081/Work/test.nsf/resdocs?wsdl';
var sr = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:DefaultNamespace">' +
           '<soapenv:Header/>' +
           '<soapenv:Body>' +
           '<urn:GETDOCSUSER><USERNAME>' + uuser +
           '</USERNAME>' +
           '</urn:GETDOCSUSER>' +
           '</soapenv:Body>' +
           '</soapenv:Envelope>';
        //текст запроса вставляю в поле xPage
          getComponent("RequestRee").setValue(sr);

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('POST', url, false, login, pass);

    // build SOAP request

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {

                alert('done use firebug to see response');
            }
        }
    }
// Send the POST request
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.send(sr);
перерыл кучу форумов, откуда и был взят примерный код, но тщетно.
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
210
В разделе Java напишите класс, делающий всё что надо, зарегистрируйте его в web.xml как bean и используйте этот bean в XPages. Пихать объёмный код на JS в XPages мне кажется неправильно. Ошибка 500 означает, что она произошла на сервере. Скорее всего не смог разобрать ваш запрос, надо смотреть его логи.
 

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
В разделе Java напишите класс, делающий всё что надо, зарегистрируйте его в web.xml как bean и используйте этот bean в XPages. Пихать объёмный код на JS в XPages мне кажется неправильно. Ошибка 500 означает, что она произошла на сервере. Скорее всего не смог разобрать ваш запрос, надо смотреть его логи.
java я не выучил. А тот код\. что я написал - это я хотел проверить, как будет работать веб служба из браузера. Служба написана для бота, который будет вертеться на сервере в другом городе. Бота будут писать вообще другие люди. Я хочу просто проверить работу, что бы дать API другому программисту.
Почитал логи и выяснил, что ошибка в строке :
Код:
var xmlhttp = new XMLHttpRequest();
Хотя везде на форумах написано, что любой браузер понимает этот объект. Даже параметры вставлял ( 'Microsoft.XMLHTTP') - все равно ошибка.
Подскажите, что не правильно сделано в ЭТОМ коде?
 
Последнее редактирование:

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
JS, LS, XPages, боты... всё смешалось люди, кони...
Ничего не смешалось!
1 Веб сервис в базе написан на LS.
2 На клиенте Lotus Notes проверена работа веб сервиса. - Ок.
3. Нарисовал страничку xPage, что бы из браузера проверить работу веб службы на кнопках на странице написал выше указанный код на событии "OnClick"
итог по п.3 - Провериь не смог, так как ошибка в коде js на кнопке.

Вот я и прошу помощи, что бы разобраться и сделать работающий код js на кнопке, что бы можно было проверить работу службы из браузера.
PS. Страничка xPage нарисована в другой базе, что бы не было прямого общения службы и запроса внутри той базы, где работает веб служба.
 
Последнее редактирование:

garrick

Lotus Team
26.10.2009
1 352
151
BIT
210
1. Нарисуйте свою HTML страничку с JS кодом просто в отдельном файле и откройте её в своём любимом браузере. Не надо XPages, если вы в них не разбираетесь.
2. Для тестирования web-сервисов нормальные люди обычно используют
 

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
1. Нарисуйте свою HTML страничку с JS кодом просто в отдельном файле и откройте её в своём любимом браузере. Не надо XPages, если вы в них не разбираетесь.
2. Для тестирования web-сервисов нормальные люди обычно используют
Я же Вас не учу, как вам работать. Если нужно xPage - значит мне надо что-то в лотусовом документе сохранять.
SOAP UI - на нем проверялось, текст запроса именно оттуда и взят. Если не можете помочь, то не пишите сюда ничего.
Прошу конкретной помощи в JS для xPage, а Вы мене какую-то обочину советуете, в смысле с в сторону от того, что надо.
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 949
609
BIT
260
xmlhttp.open('POST', url, false, login, pass);
сервер может не принимать юзера и пароль, а работать по сессии
"Error 500" и никакоих подробностей.
подробности в логе сервера, он об этом в консоль пишет
'Microsoft.XMLHTTP') - все равно ошибка.
в хэпагахах вызывать эту срань? вы серьёзно? кто вам сказал что оно там есть?
Хотя везде на форумах написано, что любой браузер понимает этот объект
хэпага не браузер, там свой тайпскрипт, точно клиентский код CSJS(есть и серверный SSJS)?
вот для клиентского
или
в контексте браузера, на том же сервере, передавать сессию не нужно
на сервере (SSJS) - можно просто вызывать java раппер для HttpURLConnection
по подобию GET - сделать POST
но вот на сервере, как раз, передавать сессию нужно, а для этого - её надо самому создать (LtpaToken - ищите "здесь")
хэпаги - это джава, сюпрайз ;)
 
Последнее редактирование:

garrick

Lotus Team
26.10.2009
1 352
151
BIT
210
Я же Вас не учу, как вам работать.
А я у вас и не спрашиваю ничего, это вы пришли сюда с вопросами.
Если нужно xPage - значит мне надо что-то в лотусовом документе сохранять.
SOAP UI - на нем проверялось, текст запроса именно оттуда и взят. Если не можете помочь, то не пишите сюда ничего.
Прошу конкретной помощи в JS для xPage, а Вы мене какую-то обочину советуете, в смысле с в сторону от того, что надо.
Научитесь корректно формулировать вопросы. У вас после каждого ответа появляются новые подробности, которые неплохо бы было озвучить сразу в начальном вопросе.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 949
609
BIT
260
до кучи...
-передача запроса на домину, по хттп, внутри сервера (к локалхосту), без передачи кукесов https://codeby.net/threads/unifikacija-razrabotki.63162/post-361385. В этом случае домина должна быть защищена проксёй (прямых внешних запросов к ней, по хттп быть не должно)
-получение LtpaToken https://codeby.net/threads/classic-to-xpages-vyzov-iz-klassicheskogo-prilozhenija.64563/
темы шифрования и подписи JWT тоже где-то выкладывал
 
  • Нравится
Реакции: alexas1

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
Вернулся к текущему вопросу: Есть сервер Lotus Domino 8.5.x, который не знает такого класса как "XMLHttpRequest" для создани объекта, а появился этот класс только с версии Lotus 9.0. Все сотрудники предприятия работают на терминальном сервере путем подключения к ним через "подключение к удаленному рабочему столу". Удаленный рабочий стол не имеет выхода в интернет, а подключение ведется только в назначенным администратором сетевым ресурсам в виде сетевых дисков и серверу Lotus Domino через базового клиента Lotus Notes R8.5.x. Броузер интернета работает только с локального компьютера. То, что затеяло начальство должно работать с терминального удаленного рабочего стола через СЕРВЕР Domino, путем подключения через броузер на терминале. Следовательно все запросы броузера клиента должны быть через сервер. Нет клиентской стороны. Вопрос: Чем можно заменить класс "XMLHttpRequest" на JS?
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
210
Вы хотите из Domino сделать обычный proxy-сервер? Есть более простые специальные программы для этого.
 

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
Вы хотите из Domino сделать обычный proxy-сервер? Есть более простые специальные программы для этого.
Это только от части так. Другие программы - не подходят по условию запрета установки на терминальном сервере других программ. Только Домино и только броузер профиля пользователя терминала.
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
210
Я не админ, кто разбирается подскажет точнее. У нас админы как-то настраивали такую штуку, это настраивается на сервере и на клиенте, но смотреть Интернет можно будет только через клиента Notes (браузер, который встроен в клиента). Это если касается произвольного просмотра сайтов. Если же нужна какая-то конкретная информация с определённого сайта, то это можно сделать по-другому.
 

savl

Lotus Team
28.10.2011
2 609
313
BIT
286
На сервере есть возможность запустить web задачу так сказать, если не ошибаюсь командf load web с консоли сервера... Это позволяет использовать Server Web Navigator, база данных в которой запросы будут сохранятся.
На lotusscript вызов выглядит так: NotesDatabase.getDocumentByURL(url) , грубо говоря. Вся страница возвращается в объект NotesDocument.
Возможно в JS так же можно, если у вас xpage, либо сделать вызов агента из js
Не факт, что это вообще то что нужно, но судя по описанию вопрос - хоть что-то. Хотя мне опять же не ясна вся эта пляска в бубном вокруг терминалки и работы только с нее. ИБ такой ИБ...
С другой стороны, а что мешает дополнительно использовать внешние JS библиотеки, которые помогут в решении?
 

Ficoos

Lotus Team
15.03.2016
136
2
BIT
120
На сервере есть возможность запустить web задачу так сказать, если не ошибаюсь командf load web с консоли сервера... Это позволяет использовать Server Web Navigator, база данных в которой запросы будут сохранятся.
На lotusscript вызов выглядит так: NotesDatabase.getDocumentByURL(url) , грубо говоря. Вся страница возвращается в объект NotesDocument.
Возможно в JS так же можно, если у вас xpage, либо сделать вызов агента из js
Не факт, что это вообще то что нужно, но судя по описанию вопрос - хоть что-то. Хотя мне опять же не ясна вся эта пляска в бубном вокруг терминалки и работы только с нее. ИБ такой ИБ...
С другой стороны, а что мешает дополнительно использовать внешние JS библиотеки, которые помогут в решении?
Вся эта "пляска" затеяна для того, что бы использовать возможности программы СКУД для бизнес центра, который работает по Web запросам (JSON) к программе, а не к SQL базе. SQL только хранит данные, а программа - делает какие-то действия(запись, чтение, вычисления, назначает роли, маршруты прохода с дверьми). Задание - сделать интерфейс для клиента, что бы тот мог отправлять своим посетителям числовой пин код через смс сообщения. Сами понимаете, что это не должно быть видно из вне, а потому только терминальный сервер для броузера и запрос-ответ только через сервер Domino, который предоставляет этот веб интерфейс. Да! В программе СКУД есть похожий интерфейс, но в нем нельзя завести, например, шаблоны сообщений, номера шлюзов операторов связи, и тому подобное. По-этому нужно сделать такой интерфейс на доминошных ресурсах. Как создать объект подключения к URL, если класс "xmlHttpRequest" втекущей версии домино отсутствует. Я и так слишком много здесь выложил о проекте.
 

savl

Lotus Team
28.10.2011
2 609
313
BIT
286
Тоже мне "тайна за семью печатями", по сути надо из тонкого клиента сделать обращение к внешнему API.
А вся сложность в том что ранее используемый класс нельзя использовать, да и тонкий клиент ограничен по функционалу.
Как я уже сказал можно поискать сторонние js либы, тот же JQuery.ajax наверняка из html просто вызвать или даже на голом js сделать отправку запроса, просто запрос придется строкой собирать.
Вот тут альтернатива, если класс не найден, но используется COM
 

Мыш

Lotus Team
12.02.2008
1 221
29
BIT
77
Я ни фига не понял, но на Java нельзя реализовать? Скажем, вот типа этого:
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
210
Как создать объект подключения к URL, если класс "xmlHttpRequest" втекущей версии домино отсутствует. Я и так слишком много здесь выложил о проекте.
Раз есть какое-то API для JSON запросов, то стопудово оно через curl тоже работает, да и просто по HTTP/HTTPS. Зачем вообще нужен этот XMLHttpRequest? Вы же нее собираетесь весь свой "секретный" код в web-странице хранить?
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!