Вызов POST (NotesHTTPRequest)

NetWood

Lotus Team
17.04.2008
565
96
BIT
174
Может я что-то пропустил, но POST и GET это же структурно браузерный JS. Никогда не юзал LS для этого и не было никаких проблем. Отдаем JSON на выходе из агента хоть в dojo хоть в jQuery и счастливо живем с аяксом.
Вот примеры.
Любой браузер сейчас хорошо понимает ошибки в JSON для отладки и зачем такие сложности?
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
Может я что-то пропустил, но POST и GET это же структурно браузерный JS. Никогда не юзал LS для этого и не было никаких проблем. Отдаем JSON на выходе из агента хоть в dojo хоть в jQuery и счастливо живем с аяксом.
Вот примеры.
Любой браузер сейчас хорошо понимает ошибки в JSON для отладки и зачем такие сложности?
это если браузер есть в процессе ;)
как пример - у мя сервис , я из клиента его использую, браузера нет
 

Irina

Green Team
31.05.2019
145
2
BIT
0
спасибо за помощь, но пока не могу полностью разобраться, простите за постоянные вопросы, но хотелось бы просто разобраться с проблемой

дали пример связи с их сервисом
Код:
curl --location --request POST 'http://www'
\ --header 'Authorization: Basic
Code'
\ --header 'Content-Type: application/json' \ --data-raw '{
"inf": "asdf",
"contentType": "text/plain",
"content": "Hello World!"
}
плюс дали логин и пароль для доступа

делаю так

Код:
    Set webRequest = session.createhttprequest()
    webRequest.Preferutf8=True
    webRequest.Preferstrings=True
    url = "http://www"
        
    Dim json As String
    json = |{
    "inf": "asdf",
    "contentType": "text/plain",
    "content": "Hello world",
     }|

    Call webRequest.Setheaderfield("Authorization", "Basic " + EncodeBase64(login + ":" + password))
    Call webRequest.Setheaderfield("Content-Type", "application/json; charset=UTF-8")

    response = webRequest.Post(url,json)
но ошибка в response , правильно ли я делаю вообще?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
спасибо за помощь, но пока не могу полностью разобраться, простите за постоянные вопросы, но хотелось бы просто разобраться с проблемой

дали пример связи с их сервисом
Код:
curl --location --request POST 'http://www'
\ --header 'Authorization: Basic
Code'
\ --header 'Content-Type: application/json' \ --data-raw '{
"inf": "asdf",
"contentType": "text/plain",
"content": "Hello World!"
}
плюс дали логин и пароль для доступа

делаю так

Код:
    Set webRequest = session.createhttprequest()
    webRequest.Preferutf8=True
    webRequest.Preferstrings=True
    url = "http://www"
     
    Dim json As String
    json = |{
    "inf": "asdf",
    "contentType": "text/plain",
    "content": "Hello world",
     }|

    Call webRequest.Setheaderfield("Authorization", "Basic " + EncodeBase64(login + ":" + password))
    Call webRequest.Setheaderfield("Content-Type", "application/json; charset=UTF-8")

    response = webRequest.Post(url,json)
но ошибка в response , правильно ли я делаю вообще?
ошибка какая?
и жсон невалидный, в curl передан правильный, в нотес - ошибка
"content": "Hello world",
}

запятая лишняя
 

Irina

Green Team
31.05.2019
145
2
BIT
0
ошибка какая?
и жсон невалидный, в curl передан правильный, в нотес - ошибка
"content": "Hello world",
}

запятая лишняя
да, запятую уже убрала, просто здесь забыла указать это
ошибка:
Unable to establish connection to remote server, please enable debug trace setting Debug_NotesHTTPRequest for more information
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
да, запятую уже убрала, просто здесь забыла указать это
ошибка:
Unable to establish connection to remote server, please enable debug trace setting Debug_NotesHTTPRequest for more information
нет доступа к серверу, причины - надо идти через прокси, политики на винде...
просто нет маршрута к этому серверу
да, забыл с ECL надо обязательно соглашаться, в запросе прав будет пусто (этот глюк исправили в 12бета3 ЕМНИП)
 

Irina

Green Team
31.05.2019
145
2
BIT
0
нет доступа к серверу, причины - надо идти через прокси, политики на винде...
просто нет маршрута к этому серверу
да, забыл с ECL надо обязательно соглашаться, в запросе прав будет пусто (этот глюк исправили в 12бета3 ЕМНИП)
забыл с ECL надо обязательно соглашаться, - у меня не запрашивает ничего
сейчас им буду писать, может реально что-то в доступе надо исправить у меня

а еще , а как в json использовать переменную, нашла , что должно работать так
some_content = "1234567"
{
"content" : "{{some_content}}"
}
будет ли так работать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
забыл с ECL надо обязательно соглашаться, - у меня не запрашивает ничего
сейчас им буду писать, может реально что-то в доступе надо исправить у меня

а еще , а как в json использовать переменную, нашла , что должно работать так
some_content = "1234567"
{
"content" : "{{some_content}}"
}
будет ли так работать?
если из ЛС то так не будет ;) чем конкатенация не устраивает?
еще есть либа от @VladSh по работе с парсингом жсон чисто на ЛС
 
  • Нравится
Реакции: Irina

Irina

Green Team
31.05.2019
145
2
BIT
0
если ранее было
Код:
    Set objXmlHttp = CreateObject("Msxml2.XMLHTTP")
    Call objXmlHttp.Open("POST", url, False)
    Call objXmlHttp.Send(ddd)
то теперь достаточно
Код:
    Call webRequest.Setheaderfield("Authorization", "Basic " + EncodeBase64(login + ":" + password))
    
    response = webRequest.Post(url,Json)
то есть никаких send уже не надо, все в post ? правильно я поняла?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
если ранее было
Код:
    Set objXmlHttp = CreateObject("Msxml2.XMLHTTP")
    Call objXmlHttp.Open("POST", url, False)
    Call objXmlHttp.Send(ddd)
то теперь достаточно
Код:
    Call webRequest.Setheaderfield("Authorization", "Basic " + EncodeBase64(login + ":" + password))

    response = webRequest.Post(url,Json)
то есть никаких send уже не надо, все в post ? правильно я поняла?
да, или в get
"раньше" смотря у кого ;) я никогда не пользовал КОМу для хттп в домине (ток из хухеля)
 
  • Нравится
Реакции: Irina

Irina

Green Team
31.05.2019
145
2
BIT
0
получаю response
{"myid":"111-abc-234"}
а как мне получить в lousscript только значение 111-abc-234 из json response?
 

Irina

Green Team
31.05.2019
145
2
BIT
0
еще возник вопрос, от меня запускается (у меня стоит 10й клиент), а вот от сервера нет (на нем 9ка). получается для запуска агента обязательно надо обновить версию на сервере? Error loading USE or USELSX module: ...
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
517
еще возник вопрос, от меня запускается (у меня стоит 10й клиент), а вот от сервера нет (на нем 9ка). получается для запуска агента обязательно надо обновить версию на сервере? Error loading USE or USELSX module: ...
да, сервер обязан быть версии 10 или выше, эти методы только с 10-ки появились.
 

Irina

Green Team
31.05.2019
145
2
BIT
0
подскажите, как можно в лог вывести строку ошибки? я просто не пойму в какой момент код выдает данное сообщение в лог type mismatch , и агент останавливается сразу.
хотя если я вручную запускаю агент, он отрабатывает без каких либо проблем

вывожу ошибку в лог
Error$ & " on " & CStr(Erl) & Chr(13)
но вот не пойму , ошибка Type mismatch в строке
Set jsonObj = parser.parse(jsonString)
хотя вручную отрабатывает
 
Последнее редактирование:

savl

Lotus Team
28.10.2011
2 624
314
BIT
517
подскажите, как можно в лог вывести строку ошибки? я просто не пойму в какой момент код выдает данное сообщение в лог type mismatch , и агент останавливается сразу.
хотя если я вручную запускаю агент, он отрабатывает без каких либо проблем

вывожу ошибку в лог
Error$ & " on " & CStr(Erl) & Chr(13)
но вот не пойму , ошибка Type mismatch в строке
Set jsonObj = parser.parse(jsonString)
хотя вручную отрабатывает,
Предположу, что jsonString не стринг, а variant пошел, либо что-то еще.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
348
подскажите, как можно в лог вывести строку ошибки? я просто не пойму в какой момент код выдает данное сообщение в лог type mismatch , и агент останавливается сразу.
хотя если я вручную запускаю агент, он отрабатывает без каких либо проблем

вывожу ошибку в лог
Error$ & " on " & CStr(Erl) & Chr(13)
но вот не пойму , ошибка Type mismatch в строке
Set jsonObj = parser.parse(jsonString)
хотя вручную отрабатывает
1. А что такое parser?
2. Для серверных агентов на сервере в log.nsf и консоль сервера можно выводить сообщения через
 

Irina

Green Team
31.05.2019
145
2
BIT
0
все, доступ не работал и не было данных. простите, решилась проблема после добавления доступа
 
Мы в соцсетях:

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