json строка в NotesHTTPRequest

swyatogor

Green Team
24.02.2014
594
24
BIT
4
Добрый день..

как вот сюда:
Код:
Dim webRequest as NotesHTTPRequest
Set webRequest = NotesSession.CreateHTTPRequest()
Call webRequest.post(URL$, valueV)
в значение valueV воткнуть корректную json строку?
голову уже свернул((
 

swyatogor

Green Team
24.02.2014
594
24
BIT
4
оказывается вставить саму строку не трабла.. бяда в том что с русскими символами неполучается..
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
528
А если задать заголовок?
Dim webRequest as NotesHTTPRequest
Set webRequest = NotesSession.CreateHTTPRequest()
Call webRequest.SetHeaderField(headerfield$, headervalue$)

 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
617
223
BIT
24
.Preferstrings = True ?



Hi Ulrich – Looks like the Post(URL, ValueV) method of NotesHTTPRequest has a 64k limit too, just like NotesJSONNavigator.

If I pass a ValueV larger than 64k, it gets truncated to 65535 bytes upon post. Tried lots of workarounds including passing a Variant List instead of a string, NotesStreams and so on, sadly nothing gets around the limit.

So although these new classes are OK for simple REST APIs, once you start passing around Base64 encoded JPEGs, both new sets of classes fall over.
 

swyatogor

Green Team
24.02.2014
594
24
BIT
4
по разному пробовал.. ссылку видел.. в ней нет инфы как быть не с юникодом)
Call webRequest.SetHeaderField(headerfield$, headervalue$)
что то не канает((
Код:
    Call webRequest.SetHeaderField("Content-type", "text/html")
    Call webRequest.SetHeaderField("charset", "windows-1251")
 

swyatogor

Green Team
24.02.2014
594
24
BIT
4
вобщем решилось вот так:
Код:
Function conv(txt As String)
    Dim x As Long
    Dim char As String
    Dim s As String
    Dim i As Long
    
    For i =0 To Len(txt)-1
        char = Mid(txt,i+1,1)
        x& = Uni(char)
        If(x&>127) Then
            s = s + "\u0" + Hex$(x&)
        Else
            s = s + char
        End If
        
    Next
    conv = s

End Function
 
  • Нравится
Реакции: savl и Domino-Designer

swyatogor

Green Team
24.02.2014
594
24
BIT
4
небольшое добавление)
кроме этого нуно еще и экранирование сделать было
Код:
Function removeCRLF(json As String) As String
    removeCRLF = Replace(Replace(Replace(Replace(Replace(json,|\|,|\\|), Chr(13)+Chr(10), "\n"),Chr(10)+Chr(13), "\n"),|"|,|\"|),Chr(160),"")
End Function
ну и вызов стал вот такой:
Код:
conv(removeCRLF(txt))
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
467
вот как знал - эти ЛС классы только добавят гимора ;)
в java все "просто" :)
ЗЫЖ жсон передавать правильнее с
Код:
Content-Type", "application/json")
и где-то я выкладывал майм преобразование стринга в кодировку, полагаю это сделало бы нужную кодировку из ЛС представления строки, вот что-то типа как Степан
 

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
43
небольшое добавление)
кроме этого нуно еще и экранирование сделать было
Код:
Function removeCRLF(json As String) As String
    removeCRLF = Replace(Replace(Replace(Replace(Replace(json,|\|,|\\|), Chr(13)+Chr(10), "\n"),Chr(10)+Chr(13), "\n"),|"|,|\"|),Chr(160),"")
End Function
ну и вызов стал вот такой:
Код:
conv(removeCRLF(txt))
кодинг\эндкодинг джейсона - опять руками??
Что то они там явно не допилякали...
вот с чем я столкнулся уже. список постепенно обновляется.

Public Function EscapeJSONString(jsonstr$) As String
GoTo begin
errors:Error Err, Error & " |" & GetThreadInfo(1) & " in Line:" & Erl & "|"
begin:On Error GoTo errors
EscapeJSONString=Replace(jsonstr,"\","\\")
EscapeJSONString=Replace(EscapeJSONString,{"},{\"})
EscapeJSONString=Replace(EscapeJSONString,Chr(13),{\r})
EscapeJSONString=Replace(EscapeJSONString,Chr(10),{\n})
EscapeJSONString=Replace(EscapeJSONString,Chr(9),{\t})
EscapeJSONString=Replace(EscapeJSONString,Chr(08),{\b})
EscapeJSONString=Replace(EscapeJSONString,Chr(12),{\f})
EscapeJSONString=Replace(EscapeJSONString,Chr(26),{\u001a})
EscapeJSONString=Replace(EscapeJSONString,Chr(1),{\u0001})
EscapeJSONString=Replace(EscapeJSONString,Chr(2),{\u0002})
EscapeJSONString=Replace(EscapeJSONString,Chr(19),{})
End Function

Вызов ява парсера из LS вносит накладные расходы... так что - опять жуем кактус...
 
  • Нравится
Реакции: Domino-Designer
Мы в соцсетях:

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