Попытка упаковать JSON в VBscript и продолжать получать ошибки - PullRequest
0 голосов
/ 26 октября 2018

С помощью этого кода я смог пройти этап дайджест-аутентификации и получить обратно 200 ok.

Это мой код VBscript:

Option Explicit
Dim restReq, url
Dim jsontext, headerText
Dim fso1 : Set fso1 = CreateObject("Scripting.FileSystemObject")
Dim file1 : Set file1 = fso1.OpenTextFile("\\uspmuusrichm1a\users-h\nguyenhv\2018\PP camera system M.1879\document\Axis decoder\myfile.txt", 2, True)
headerText = "username="&"root"&", "&"realm="&"axis"&", "&"nonce="&"cd0357704fb04263a8203225579087d7"&", "&"uri="&"/axis-cgi/decoder.cgi"&", "&"algorithm="&"MD5"&", "&"response="&"385e2c4ad1be0feb5b8fa453f88e1c1b"&", "&"opaque="&"384b4e29e47341b6a967d94dc6a2c7e2"
Set restReq = CreateObject("MSXML2.serverXMLHTTP")
url = "http://10.67.72.130/axis-cgi/decoder.cgi"
jsontext = "{"&"apiVersion"&": "&"1.0"&" ,"&"context"&": "&"123"&"1.0"&" ,"&"method"&": "&"getCapabilities"&"}"
restReq.open "POST", url, false
restReq.setRequestHeader "Content-Type","application/json"
restReq.setRequestHeader "authorization","Digest " & headerText
restReq.send (jsontext)
file1.WriteLine "Status_Response : " & restReq.Status
file1.WriteLine "HEADER_RESPONSE : " & restReq.getAllResponseHeaders
file1.WriteLine "BODY_RESPONSE : " & restReq.responseText
file1.Close

И это мойОтвет декодера:

Decoder response
Status_Response : 200
HEADER_RESPONSE : Date: Sat, 31 Jan 1970 16:25:20 GMT
Content-Length: 101
Content-Type: text/html; charset=UTF-8
Server: TornadoServer/4.0.2
Vary: Accept-Encoding
BODY_RESPONSE : {"error": {"message": "None", "code": 202}, "context": "None", "apiVersion": "1.0", "method": "None"}

При коде ошибки 202, согласно руководству по декодеру, код ошибки «202» означает

недопустимый JSON.

Это означает, что мое текстовое тело по запросу недопустимо.
Мой перевод из текстовой строки JSON:

{
  "apiVersion": "1.0",
  "context": "123",
  "method": "getViewConfiguration"
}

Но, похоже, это не такправильно?
Последнее препятствие, любая помощь приветствуется!

1 Ответ

0 голосов
/ 26 октября 2018

Аллилуйя !!

Vbscript

Option Explicit
Dim restReq, url
Dim jsontext, headerText
Dim fso1 : Set fso1 = CreateObject("Scripting.FileSystemObject")
Dim file1 : Set file1 = fso1.OpenTextFile("\\uspmuusrichm1a\users-h\nguyenhv\2018\PP camera system M.1879\document\Axis decoder\myfile.txt", 2, True)
headerText = "username="&"root"&", "&"realm="&"axis"&", "&"nonce="&"cd0357704fb04263a8203225579087d7"&", "&"uri="&"/axis-cgi/decoder.cgi"&", "&"algorithm="&"MD5"&", "&"response="&"385e2c4ad1be0feb5b8fa453f88e1c1b"&", "&"opaque="&"384b4e29e47341b6a967d94dc6a2c7e2"
Set restReq = CreateObject("MSXML2.serverXMLHTTP")
url = "http://10.67.72.130/axis-cgi/decoder.cgi"
jsontext = "{""apiVersion"": ""1.0"", ""context"": ""123"", ""method"": ""getCapabilities""}"
restReq.open "POST", url, false
restReq.setRequestHeader "Content-Type","application/json"
restReq.setRequestHeader "authorization","Digest " & headerText
restReq.send (jsontext)
file1.WriteLine "Status_Response : " & restReq.Status
file1.WriteLine "HEADER_RESPONSE : " & restReq.getAllResponseHeaders
file1.WriteLine "BODY_RESPONSE : " & restReq.responseText
file1.Close

Ответ декодера Status_Response: 200 HEADER_RESPONSE: Дата: Сб, 31 января 1970 18:49:39 GMT Длина контента: 215 Тип контента: текст / html;charset = UTF-8 Сервер: TornadoServer / 4.0.2 Варьируется: Accept-Encoding

BODY_RESPONSE: {"data": {"audioCodecs": [], "overlappingPanes": "false", "videoCodecs": ["H.264", "MJPEG", "MPEG4"], "resolution": "1920x1080", "maxStreams": 16}, "context": "123", "apiVersion": "1.0", "method": "getCapabilities"}

...