понедельник, 28 октября 2019 г.

Создание запроса к службе Domino Web Service с помощью XMLHttpRequest

Отправка запроса к службе domino и получение ответа

//sr - переменная с текстом зпроса, включающим метод (Hello) службы и параметр (txt=Привет из xml) метода
var sr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:Body>" +
"<" + "Hello" + " xmlns=\"" + "urn:DefaultNamespace" + "\">" +
"<txt>Привет из xml</txt>" +
"</" + "Hello" + "></soap:Body></soap:Envelope>";
//получаем объект XMLHttpRequest
var xhr = new XMLHttpRequest();

//Открывает запрос
xhr.open("POST", "http://srv30/C3257BE400246325/HelloWorldLSWSProvider?openwebservice");
//Заполняем заголовки
xhr.setRequestHeader("SOAPAction", "Hello"); //метод службы
xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); //тип содержимого запроса

//call-back функция
 xhr.onreadystatechange = function() {
   // проверяем состояние запроса и числовой код состояния HTTP ответа
   if (this.readyState == 4 && this.status == 200) {
     console.log(this.responseText);
   }
 };

//Отправка запроса
xhr.send(sr);

//Ответ возвращается в виде xml
/*
<?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" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
 <soapenv:Body>
  <ns1:HelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:DefaultNamespace"><HelloReturn xsi:type="xsd:string">Привет из xml</HelloReturn></ns1:HelloResponse>
 </soapenv:Body>
</soapenv:Envelope>
*/


--------------------------------------------------
Web service на стороне domino:
Создается web Service Providers
Имя: HelloWorldLSWSProvider
Алиас: HWLSP
Port Type class: hwProvider
Programming Model: RPC
Soap message format: RPC/encoded
Port type name: hwProvider
Service element name: hwProviderService
Service port name: Domino

'Класс в разделе Declaration
Class hwProvider
Function Hello ( txt As String ) As String
Print "message web service"
Print txt
Hello = "Hello 111111" + txt
End Function
End Class


пятница, 28 июня 2019 г.

Перехват клавиши Enter в поле с помощью JavaScript клиента Notes

Все делается в клиенте notes на Javascript

1. Эту строку прописываем в событии Onload формы
// Проверка нажатия Enter каждые 1/10 секунды
useClick = window.setInterval("runSearch()",100); 

2. Эту строку прописываем в событии OnUnload формы
//Удаляем проверку нажатия Enter
window.clearInterval(useClick);

3. В полях Name и ID свойств кнопки, код которой будет выполняться по нажатию Enter записываем наименование кнопки, например, Button

4. В разделе JS Header формы записываем следующий код
var newline = String.fromCharCode(10);
var useClick;
var sString;
var t_sString;

function runSearch() {
sString = document.forms[0].YourSearchField.value;
if (sString.indexOf(newline)>=0) {
t_sString = replace(sString, '\n', '');
document.forms[0].YourSearchField.value = t_sString;
document.forms[0].elements['Button'].click();
}
}

function replace(str, from, to) {
var i = str.indexOf(from);
if (!from || !str || i == -1) return str;
var newstr = str.substring(0, i) + to;
if (i+from.length < str.length)
newstr += replace(str.substring(i+from.length,str.length),from,to);
return newstr;
}

//В этом коде 
YourSearchField - это наименование текстового поля в котором будет происходить перехват нажатия клавиши Enter
Button в строке document.forms[0].elements['Button'].click(); наименование/ИД кнопки, в котором прописан код для выполнения при нажатии клавиши Enter

Ссылка на источнк: Workaround to let Notes Client users just hit Enter to begin a search/click a button