Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сложности с POST запросами, при работе с API - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сложности с POST запросами, при работе с API
IIIOB Дата: Понедельник, 20.05.2019, 13:50 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
Пишу VBA макрос, в котором беру данные с Kuna.IO через их API (https://kuna.io/documents/api)

[vba]
Код
TestSignature = "/api/v2/" & Method & "|access_key=" & apiKey
If ID <> "" Then TestSignature = TestSignature & "&id=" & ID
If Symbol <> "" Then TestSignature = TestSignature & "&market=" & Symbol
If Side <> "" Then TestSignature = TestSignature & "&side=" & Side
If Price <> "" Then TestSignature = TestSignature & "&price=" & Price
TestSignature = TestSignature & "&tonce=" & NonceUnique
If Volume <> "" Then TestSignature = TestSignature & "&volume=" & Volume
'Debug.Print TestSignature
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
'Debug.Print "Hash=" & "POST|" & TestSignature
StringSignature = SignatureKuna("POST|" & TestSignature, secretKey)
'Debug.Print "signature=" & StringSignature
objHTTP.Open "POST", TradeApiSite & Replace(TestSignature, "|", "?") & "&signature=" & StringSignature, False
'Debug.Print "url=" & TradeApiSite & Replace(TestSignature, "|", "?") & "&signature=" & StringSignature
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 'application/json text/html;charset=utf-8
objHTTP.Send (TradeApiSite & Replace(TestSignature, "|", "?") & "&signature=" & StringSignature)
objHTTP.WaitForResponse
'Debug.Print objHTTP.responseText
PrivateKuna2 = objHTTP.responseText
Set objHTTP = Nothing
[/vba]

Пользовательские GET методы работают отлично, а все POST методы выдают "{"error":{"code":2005,"message":"Signature is incorrect."}}"


Сообщение отредактировал IIIOB - Понедельник, 20.05.2019, 13:58
 
Ответить
СообщениеДобрый день!
Пишу VBA макрос, в котором беру данные с Kuna.IO через их API (https://kuna.io/documents/api)

[vba]
Код
TestSignature = "/api/v2/" & Method & "|access_key=" & apiKey
If ID <> "" Then TestSignature = TestSignature & "&id=" & ID
If Symbol <> "" Then TestSignature = TestSignature & "&market=" & Symbol
If Side <> "" Then TestSignature = TestSignature & "&side=" & Side
If Price <> "" Then TestSignature = TestSignature & "&price=" & Price
TestSignature = TestSignature & "&tonce=" & NonceUnique
If Volume <> "" Then TestSignature = TestSignature & "&volume=" & Volume
'Debug.Print TestSignature
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
'Debug.Print "Hash=" & "POST|" & TestSignature
StringSignature = SignatureKuna("POST|" & TestSignature, secretKey)
'Debug.Print "signature=" & StringSignature
objHTTP.Open "POST", TradeApiSite & Replace(TestSignature, "|", "?") & "&signature=" & StringSignature, False
'Debug.Print "url=" & TradeApiSite & Replace(TestSignature, "|", "?") & "&signature=" & StringSignature
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 'application/json text/html;charset=utf-8
objHTTP.Send (TradeApiSite & Replace(TestSignature, "|", "?") & "&signature=" & StringSignature)
objHTTP.WaitForResponse
'Debug.Print objHTTP.responseText
PrivateKuna2 = objHTTP.responseText
Set objHTTP = Nothing
[/vba]

Пользовательские GET методы работают отлично, а все POST методы выдают "{"error":{"code":2005,"message":"Signature is incorrect."}}"

Автор - IIIOB
Дата добавления - 20.05.2019 в 13:50
китин Дата: Понедельник, 20.05.2019, 13:57 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7029
Репутация: 1078 ±
Замечаний: 0% ±

Excel 2007;2010;2016
IIIOB, код надо не под спойлер прятать, а оформлять тэгами. в режиме правки поста выделяете код и нажимаете кнопочку #


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеIIIOB, код надо не под спойлер прятать, а оформлять тэгами. в режиме правки поста выделяете код и нажимаете кнопочку #

Автор - китин
Дата добавления - 20.05.2019 в 13:57
IIIOB Дата: Понедельник, 20.05.2019, 13:58 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Исправил
 
Ответить
СообщениеИсправил

Автор - IIIOB
Дата добавления - 20.05.2019 в 13:58
doober Дата: Вторник, 21.05.2019, 00:08 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 971
Репутация: 333 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.
Выложите код функции SignatureKuna


 
Ответить
СообщениеЗдравствуйте.
Выложите код функции SignatureKuna

Автор - doober
Дата добавления - 21.05.2019 в 00:08
IIIOB Дата: Вторник, 21.05.2019, 10:12 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
[vba]
Код

Function SignatureKuna(urlString As String, keyString As String)
Dim xKey As String
    Dim xData As String
    Dim bSig() As Byte

    Dim StringToSign() As Byte
    Dim secretKey() As Byte

    xData = urlString
    xKey = keyString

    With New HS256a
    
        StringToSign = .ToUTF8(xData)
        secretKey = .ToUTF8(xKey)
        .InitHmac secretKey
        Erase secretKey

        bSig = .HmacSha256(StringToSign)
        Erase StringToSign

        SignatureKuna = .Encode(bSig, edfHexRaw, efNoFolding)
        Erase bSig
    End With

End Function
[/vba]

Функция генерирует подпись запроса. Повторюсь при ГЕТ запросах подпись валидная


Сообщение отредактировал IIIOB - Вторник, 21.05.2019, 10:13
 
Ответить
Сообщение[vba]
Код

Function SignatureKuna(urlString As String, keyString As String)
Dim xKey As String
    Dim xData As String
    Dim bSig() As Byte

    Dim StringToSign() As Byte
    Dim secretKey() As Byte

    xData = urlString
    xKey = keyString

    With New HS256a
    
        StringToSign = .ToUTF8(xData)
        secretKey = .ToUTF8(xKey)
        .InitHmac secretKey
        Erase secretKey

        bSig = .HmacSha256(StringToSign)
        Erase StringToSign

        SignatureKuna = .Encode(bSig, edfHexRaw, efNoFolding)
        Erase bSig
    End With

End Function
[/vba]

Функция генерирует подпись запроса. Повторюсь при ГЕТ запросах подпись валидная

Автор - IIIOB
Дата добавления - 21.05.2019 в 10:12
doober Дата: Вторник, 21.05.2019, 22:19 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 971
Репутация: 333 ±
Замечаний: 0% ±

Excel 2010
Документация у них никакая.Примеров нет.
Возможно при post запросе что то в заголовок добавляется.
Попробуйте в техподдержку задать вопрос.


 
Ответить
СообщениеДокументация у них никакая.Примеров нет.
Возможно при post запросе что то в заголовок добавляется.
Попробуйте в техподдержку задать вопрос.

Автор - doober
Дата добавления - 21.05.2019 в 22:19
IIIOB Дата: Вторник, 21.05.2019, 22:30 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Пробовал в поддержку задавать вопрос, скинули пример на nodejs и все
 
Ответить
СообщениеПробовал в поддержку задавать вопрос, скинули пример на nodejs и все

Автор - IIIOB
Дата добавления - 21.05.2019 в 22:30
IIIOB Дата: Среда, 22.05.2019, 06:49 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Проблема решена, спасибо за помощь.
Проблема заключалась в неправильной сортировке параметров запроса, в следствии чего генерировалась подпись из неправильных входящих данных
 
Ответить
СообщениеПроблема решена, спасибо за помощь.
Проблема заключалась в неправильной сортировке параметров запроса, в следствии чего генерировалась подпись из неправильных входящих данных

Автор - IIIOB
Дата добавления - 22.05.2019 в 06:49
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!