Как использовать символ с "." в URL с Alphavantage?
Я использую Alpha Vantage API и сталкиваюсь с проблемой, каждый раз, когда я пытаюсь отправить запрос API, где символ (тикер) имеет "." в этом вызов API возвращает ошибку вызова API Invalid.
Как мне пройти это?
Например, для поиска BT Group на Лондонской фондовой бирже вы должны использовать "LON:BT.A", который, как я ожидаю, сформулирует URL, как показано ниже:
https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=LON:BT.A&apikey=API_KEY
Это не работает, но в равной степени, если я хотел найти тикер без точки, то он работает отлично, например, Sky plc "LON:SKY", поэтому работает ниже:
https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=LON:SKY&apikey=API_KEY
1 ответ
Большинство тикеров, которые имеют "." в них, кажется, требуется, чтобы вы заменили их на "-", так что это сработало для меня, однако я обнаружил, что это не всегда так. Я не смог найти никакой документации с полным списком тикеров (наверное, потому, что она динамическая), поэтому перестал использовать API.
Вы можете URL-кодировать точку как %2E
, Та же техника, что и при кодировании пространства %20
, Ваш URL будет выглядеть так с закодированной точкой:
https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=LON:BT%2EA&apikey=API_KEY
Более подробную информацию о URL-кодировке можно найти здесь:
https://www.w3schools.com/tags/ref_urlencode.asp
Все еще задаюсь вопросом, почему обычная точка не допускается в URL. Думаю, что веб-сервер просто не может справиться с этим. В соответствии с RFC3986 параграф 2.3 разрешены точки и не имеют никакого особого значения.