Форум сайта python.su
Здравствуйте! Облазил всю сеть, не нашёл подсказки. Я пытаюсь переделать торгового бота, чтобы он отрезал exmo код. Чуть изменил программу, но никак не могу сформировать правильный request.
Подскажите, что мне переделать?
import urllib, http.client import time import json # эти модули нужны для генерации подписи API import hmac, hashlib from exmo_key import * # ключи API, которые предоставила exmo API_KEY = a # обратите внимание, что добавлена 'b' перед строкой API_SECRET = b CURRENCY='RUB' # базовые настройки API_URL = 'api.exmo.com' API_VERSION = 'v1' # Свой класс исключений class ScriptError(Exception): pass class ScriptQuitCondition(Exception): pass # все обращения к API проходят через эту функцию def call_api(api_method, http_method="POST", **kwargs): # Составляем словарь {ключ:значение} для отправки на биржу # пока что в нём {'nonce':123172368123} payload = {'nonce': int(round(time.time()*1000))} # Если в ф-цию переданы параметры в формате ключ:значение if kwargs: # добавляем каждый параметр в словарь payload # Получится {'nonce':123172368123, 'param1':'val1', 'param2':'val2'} payload.update(kwargs) # Переводим словарь payload в строку, в формат для отправки через GET/POST и т.п. payload = urllib.parse.urlencode(payload) # Из строки payload получаем "подпись", хешируем с помощью секретного ключа API # sing - получаемый ключ, который будет отправлен на биржу для проверки H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512) H.update(payload.encode('utf-8')) sign = H.hexdigest() # Формируем заголовки request для отправки запроса на биржу. # Передается публичный ключ API и подпись, полученная с помощью hmac headers = {"Content-type": "application/x-www-form-urlencoded", "Key":API_KEY, "Sign":sign, "currency":CURRENCY, "amount":10 } # Создаем подключение к бирже, если в течении 60 сек не удалось подключиться, обрыв соединения conn = http.client.HTTPSConnection(API_URL, timeout=60) # После установления связи, запрашиваем переданный адрес # В заголовке запроса уходят headers, в теле - payload conn.request(http_method,"/"+API_VERSION + "/" + api_method, payload, headers) # Получаем ответ с биржи и читаем его в переменную response response = conn.getresponse().read() # Закрываем подключение conn.close() return response ex_code=call_api('excode_create') print(ex_code)
conn.request(http_method,"/"+API_VERSION + "/" + api_method, payload, headers)
Отредактировано AlexSn2020 (Июнь 25, 2020 08:09:51)
Офлайн
Ну и? Что не выхожит то? Что должно выйти?
Где ошибка? Примеры вывода?
Офлайн