Потоковая оценка от oanda V20 rest api с использованием запросов Python

Я пытаюсь показать цену на инструмент от Oandas V20 rest api, но без особого успеха. Я использую запросы Python, так как это работает для обычных запросов get. Вот где я попал:

import requests
url = 'https://stream-fxpractice.oanda.com/v3/accounts/MY_ACCOUNT_ID/pricing?instruments=EUR_USD'
head = {'Content-type':"application/json",
        'Accept-Datetime-Format':"RFC3339",
        'Authorization':"Bearer MY_ACCESS8TOKEN"}


r = requests.get(url, headers=head, stream=True)
print(r)

for line in r.iter_lines():

    if line:
        decoded_line = line.decode('utf-8')
        print(json.loads(decoded_line))

Код ошибки ответа 405 означает, что метод не поддерживается. Что я делаю неправильно?

2 ответа

Решение

Ваш URL-адрес недействителен (см. http://developer.oanda.com/rest-live-v20/pricing-ep/),
должно быть:

url_OK = 'https://stream-fxpractice.oanda.com/v3/accounts/MY_ACCOUNT_ID/pricing/stream?instruments=EUR_USD'

вместо:

urlNOT = 'https://stream-fxpractice.oanda.com/v3/accounts/MY_ACCOUNT_ID/pricing?instruments=EUR_USD'
//        |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||vvvvvvvv
// _OK = 'https://stream-fxpractice.oanda.com/v3/accounts/MY_ACCOUNT_ID/pricing/stream?instruments=EUR_USD'

Если вы не хотите создавать URL-адреса, вы можете использовать одну из привязок V20: https://github.com/search?utf8=%E2%9C%93&q=v20&type=

Проверьте, например, пример кода в этих репозиториях, например: https://github.com/hootnot/oandapyV20-examples

Шаг 0.: подтвердите ваши права доступа:

Использование OANDA по умолчанию curl Например, проверьте свои учетные данные для доступа:

curl \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <AUTHENTICATION TOKEN>" \
  "https://api-fxtrade.oanda.com/v3/accounts/<ACCOUNT>/pricing?instruments=EUR_USD%2CUSD_CAD"

CASE isERR: обратитесь в службу поддержки OANDA, чтобы устранить проблемы с недействительными учетными данными.

CASE wasOK: перейдите к шагу 1.


Шаг 1.: повторить curl Синтаксис вызова как есть внутри одноразового питона

ничего не добавлено, ничего не исключено. Должны предоставить те же результаты, что и на шаге 0.

CASE isERR: проверьте ваш однократный python-код, чтобы он соответствовал 1:1 рабочей спецификации OANDA, которая уже доказала свою работоспособность на шаге 0.

  • Просмотрите статус службы OANDA, используя curl ниже:
    curl http://api-status.oanda.com/api/v1/services
  • Просмотрите отчет об ошибках.

СЛУЧАЙ был в порядке: перейдите к шагу 2.


Шаг 2: расширить код Python, чтобы запросить и обработать ответ

тем не менее, имейте в виду, чтобы не выходить за рамки заявленного OANDA максимального количества запросов в день и аналогичных ограничительных ограничений, с которыми следует обращаться осторожно.

CASE isERR: просмотреть статус службы OANDA, используя curl ниже и возможные сообщения об ошибках:

curl http://api-status.oanda.com/api/v1/services

СЛУЧАЙ был в порядке: Поздравляю, ваш источник ценообразования стал работать в полном соответствии со спецификациями.


Ошибка 405 не является "не поддерживаемой" службой, НО "не разрешена"

405 метод не разрешен

Ответ "Метод 405 не разрешен" может быть возвращен из API REST v20, когда клиент пытается получить доступ к конечной точке API с помощью метода HTTP, который не поддерживается. Тип содержимого ответа будет application/json и имеет следующую схему:

{
    # 
    # The code of the error that has occurred.  This field may not be returned
    # for some errors.
    # 
    errorCode : (string),

    # 
    # The human-readable description of the error that has occurred.
    # 
    errorMessage : (string, required)
}
Другие вопросы по тегам