json строка в NotesHTTPRequest

  • Автор темы Автор темы swyatogor
  • Дата начала Дата начала

swyatogor

Green Team
24.02.2014
588
24
Добрый день..

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

 
.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.
 
по разному пробовал.. ссылку видел.. в ней нет инфы как быть не с юникодом)
Call webRequest.SetHeaderField(headerfield$, headervalue$)
что то не канает((
Код:
    Call webRequest.SetHeaderField("Content-type", "text/html")
    Call webRequest.SetHeaderField("charset", "windows-1251")
 
вобщем решилось вот так:
Код:
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
небольшое добавление)
кроме этого нуно еще и экранирование сделать было
Код:
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))
 
вот как знал - эти ЛС классы только добавят гимора ;)
в java все "просто" :)
ЗЫЖ жсон передавать правильнее с
Код:
Content-Type", "application/json")
и где-то я выкладывал майм преобразование стринга в кодировку, полагаю это сделало бы нужную кодировку из ЛС представления строки, вот что-то типа как Степан
 
небольшое добавление)
кроме этого нуно еще и экранирование сделать было
Код:
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
Мы в соцсетях:

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