1

Запросы через VBA к API ???

(edited by monkalanin 15/07/2020 09:55:43)

Topic: Запросы через VBA к API ???

хочу реализовать подключение к Гуртам Хостингу через API используя язык VBA
Не совсем понимаю как получить токен. Помогите
Вот ещё попробовал создать токен как у вас сказано:

Dim HTMLSource ,XMLHTTP,url,param
Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
param = "?svc=token/update&params={callMode:create,app:vba,fl:0x100}"
url = "https://hst-api.wialon.com/wialon/ajax.html"
XMLHTTP.Open "POST", url, True
XMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XMLHTTP.setRequestHeader "Content-Length", Len(pstData)
XMLHTTP.setRequestHeader "Cache-Control", "no-store, no-cache"
XMLHTTP.setRequestHeader "Pragma", "no-cache"
XMLHTTP.send param
XMLHTTP.waitForResponse = True
HTMLSource = XMLHTTP.responseText
MsgBox HTMLSource

Или так:

Dim XMLHTTP, stext
Set XMLHTTP = CreateObject ("MSXML2.XMLHTTP.6.0")
    XMLHTTP.Open "GET", "https://hst-api.wialon.com/wialon/ajax.html?svc=token/update&params={""callMode"":create,""app"":""vba"",""fl"":0x100}", False
    XMLHTTP.send 
    stext = XMLHTTP.responseText
    MsgBox stext

Везде получаю сообщение : error:4,reason:WRONG_PARAMS

Вроде бы передаю параметры верно, что ещё надо непойму???

2

Запросы через VBA к API ???

Re: Запросы через VBA к API ???

У вас написано:

В 2015 году core/login был отключён.

Текущая схема такова:

Получаем токен/одноразовый хеш по https://hosting.wialon.com/login.html (параметры)
Используем token/login, либо core/use_auth_hash
Если нужно логиниться под разными пользователями/нет возможности показать форму — можно руками получить токен на пользователя верхнего уровня, затем на своём сервере от него создавать токены нужным пользователям.

Я логинюсь:

Dim HTMLSource ,XMLHTTP,url,param,x
Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
param = "?svc=core/login&params={""user"":""******"",""password"":""*****""}"
url = "https://hst-api.wialon.com/wialon/ajax.html"
XMLHTTP.Open "POST", url, True
XMLHTTP.send param
XMLHTTP.waitForResponse = True
HTMLSource = XMLHTTP.responseText
MsgBox HTMLSource

Пишет Ошибка 4 , неверные параметры.

Пытаюсь по другому

Dim HTMLSource ,XMLHTTP,url,param,fso,ts,sq,OFile,x
Set XMLHTTP = CreateObject ("MSXML2.XMLHTTP.6.0")
    XMLHTTP.Open "GET", "http://hosting.wialon.com/login.html?client_id=vb6&access_type=0x100&activation_time=0&duration=2592000&user=******&response_type=token", False
    XMLHTTP.send 
    stext = XMLHTTP.responseText
    MsgBox stext

Присылает в ответ кучу текста

Делаю гет запрос:

Set XMLHTTP = CreateObject ("MSXML2.XMLHTTP.6.0")
    XMLHTTP.Open "GET", "https://hst-api.wialon.com/wialon/ajax.html?svc=core/login&params={""user"":""Алексей ресурс"",""password"":""12345""}", False
    XMLHTTP.send 
    stext = XMLHTTP.responseText
    MsgBox stext
    

Выскакивает ошибка 8 !

Объясните как у вас создать токен если он не даёт создавать без авторизации, а авторизация у вас не совсем известно как работает потому что а документации у вас 4-5 разных разделов по авторизации, которые указывают на друг друга и говорит что прошлая устарела теперь новая и я не пойму какой вариант актуальный?

3

Запросы через VBA к API ???

Re: Запросы через VBA к API ???

monkalanin
1. http://hosting.wialon.com/login.html?cl … type=token - это не API запрос, это обычная web-страница с формой авторизации. Откройте её в браузере, введите логин/пароль - получите token. Проделать это процедуру нужно один раз и потом пользоваться токеном вечно (чтобы отключить ограничение по времени добавьте duration=0 в параметры формы)
2. Когда у вас есть токен - мы можете использовать его для работы с RemoteAPI. В первую очередь - token/login, который вернёт короткоживущий sid (sessionId)
3. Когда у вас есть sid - можете выполнять любые Remote API запросы.