Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 отправка и получение JSON  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 167
Здравствуйте, О ГУРУ!)
Подскажите советом, где у меня в коде ошибка?
Пытаюсь отправить JSON-объект.
В ответ получаю сообщение "Ошибка декодирования данных"
Заранее спасибо за помощь!

Private Sub JSON_TEST()
Dim strQuery As String, myUrl As String
        
strQuery = "{""version"":""" & "1.0" & """,""dateExecute"":""" & "2019-02-18" & """,""senderCityId"":""" & "270" & _
""",""receiverCityId"":""" & "44" & _
""",""tariffId"":""" & "137" & _
""",""goods"":[{""weight"":""" & "0.3" & _
""",""length"":""" & "10" & """,""width"":""" & "7" & """,""height"":""" & "5" & _
"""},{""weight"":""" & "0.1" & """,""volume"":""" & "0.1" & """}],""services"": [{""id"": 2,""param"": 2000}," & _
        """ & {""id"": 30}]}"

''strQuery = StrConv(strQuery, vbFromUnicode)
'Debug.Print strQuery

myUrl = "http://api.cdek.ru/calculator/calculate_price_by_json_request.php"
''myUrl = "http://api.cdek.ru/calculator/calculate_price_by_json.php"
  
Dim WinHttpReq As Object
'Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
Set WinHttpReq = CreateObject("MSXML2.XMLHTTP")
WinHttpReq.Open "POST", myUrl, False
'WinHttpReq.Open "GET", myUrl, False
'WinHttpReq.setRequestHeader "Content-Type:", "application/json;charset=utf-8"
WinHttpReq.setRequestHeader "Content-Type:", "application/x-www-form-urlencoded;charset=utf-8"

WinHttpReq.send (strQuery)

'Debug.Print WinHttpReq.responseText

MsgBox "Готово!" & Chr(13) & Chr(13) & _
"Text = " & WinHttpReq.responseText, 64, "Тест"

Set WinHttpReq = Nothing
End Sub
8 май 19, 13:14    [21880944]     Ответить | Цитировать Сообщить модератору
 Re: отправка и получение JSON  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 464
-SWAN-, навскидку """ & {""id"": 30}]}"
8 май 19, 13:39    [21880980]     Ответить | Цитировать Сообщить модератору
 Re: отправка и получение JSON  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 167
alecko
-SWAN-, навскидку """ & {""id"": 30}]}"


да, ошибочка, спасибо!
Исправил, но ответ все равно тот же

Private Sub JSON_TEST()
Dim strQuery As String, myUrl As String
        
strQuery = "{""version"":""" & "1.0" & """,""dateExecute"":""" & "2019-02-18" & """,""senderCityId"":""" & "270" & _
""",""receiverCityId"":""" & "44" & _
""",""tariffId"":""" & "137" & _
""",""goods"":[{""weight"":""" & "0.3" & _
""",""length"":""" & "10" & """,""width"":""" & "7" & """,""height"":""" & "5" & _
"""},{""weight"":""" & "0.1" & """,""volume"":""" & "0.1" & """}],""services"": [{""id"": 2,""param"": 2000},{""id"": 30}]}"

Debug.Print strQuery

myUrl = "http://api.cdek.ru/calculator/calculate_price_by_json_request.php"
''myUrl = "http://api.cdek.ru/calculator/calculate_price_by_json.php"
  
Dim WinHttpReq As Object
'Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
Set WinHttpReq = CreateObject("MSXML2.XMLHTTP")
WinHttpReq.Open "POST", myUrl, False
'WinHttpReq.Open "GET", myUrl, False
'WinHttpReq.setRequestHeader "Content-Type:", "application/json;charset=utf-8"
WinHttpReq.setRequestHeader "Content-Type:", "application/x-www-form-urlencoded;charset=utf-8"
'WinHttpReq.setRequestHeader "Content-Type:", "text/xml; charset=utf-8"

WinHttpReq.send (EncodeUTF8(strQuery))
'WinHttpReq.send (strQuery)

'Debug.Print WinHttpReq.responseText

MsgBox "Готово!" & Chr(13) & Chr(13) & _
"Text = " & WinHttpReq.responseText, 64, "Тест"

Set WinHttpReq = Nothing
End Sub
8 май 19, 13:53    [21881006]     Ответить | Цитировать Сообщить модератору
 Re: отправка и получение JSON  [new]
court
Member

Откуда:
Сообщений: 1664
-SWAN-
Исправил, но ответ все равно тот же
да, теперь JSON валидный
{
	"version": "1.0",
	"dateExecute": "2019-02-18",
	"senderCityId": "270",
	"receiverCityId": "44",
	"tariffId": "137",
	"goods": [{
		"weight": "0.3",
		"length": "10",
		"width": "7",
		"height": "5"
	}, {
		"weight": "0.1",
		"volume": "0.1"
	}],
	"services": [{
		"id": 2,
		"param": 2000
	}, {
		"id": 30
	}]
}

Results Valid JSON

Смотри спецификацию JSON-а который принимает сервис
8 май 19, 14:26    [21881087]     Ответить | Цитировать Сообщить модератору
 Re: отправка и получение JSON  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 167
alecko И court,

Спасибо Вам Большое за помощь!
Всё получилось!
Надо было просто ещё добавить аккаунт и пароль (хотя в описании они необязательны) в строку)))
8 май 19, 15:12    [21881181]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить