Как использовать символ с . в URL с Alphavantage?

Я использую API Alpha Vantage и сталкиваюсь с проблемой каждый раз, когда пытаюсь отправить запрос API, где символ (тикер) имеет "." в нем вызов API возвращает ошибку Invalid API call.

Как мне пройти через это?

Например, для поиска 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

person KillerKode    schedule 10.09.2018    source источник
comment
Возможный дубликат Как кодировать периоды URL?   -  person jww    schedule 18.09.2018


Ответы (2)


Большинство бегущих строк, которые имеют "." в них, похоже, требуется, чтобы вы заменили их на «-», так что это сработало для меня, однако я обнаружил, что это не всегда так. Я не смог найти документацию с исчерпывающим списком тикеров (вероятно, потому что он динамический), поэтому перестал использовать API.

person KillerKode    schedule 03.04.2019
comment
Я пробовал следующее, но безрезультатно: CCC.U CCC_U CCC-U CCC+U CCC%2DU CCC%2EU - person alfadog67; 09.04.2019
comment
&symbol=NYSE:CCC, кажется, работает для меня. Я давно не пользовался API Alpha Vantage, сейчас он может быть лучше, но я не смог найти единообразия в тиккерах, поэтому прекратил его использовать. - person KillerKode; 09.04.2019
comment
Да, я уверен, что это так. Мой пример относится к CCC.U или любому символу, содержащему знаки препинания. - person alfadog67; 10.04.2019
comment
О, извините, я быстро погуглил и подумал, что CCC — это то же самое, что и CCC.U. Какая именно это фирма? Если я проверю CCC-U, он тоже покажет результат, но не уверен, что это та же компания. - person KillerKode; 10.04.2019
comment
Интересно... CCC-U для меня не сработает, он возвращает Invalid API call. Повторите попытку или просмотрите документацию (alphavantage.co/documentation) за TIME_SERIES_DAILY. Не могли бы вы опубликовать свой URL-адрес (без вашего ключа), чтобы я мог продолжить? Кстати, CCC.U — это Churchill Capital Corp. - person alfadog67; 10.04.2019
comment
Вот моя ссылка: alphavantage.co/ Конечно, с заменой MyKey на мой ключ ;-) - person alfadog67; 10.04.2019
comment
Ну, я использовал этот URL-адрес: alphavantage.co/ - это работает нормально и, кажется, возвращает правильную цену для Черчилля. Однако, когда я попробовал это вчера в своей домашней сети, это не сработало. Но сегодня утром в моей рабочей сети все работает нормально. Еще один момент ненадежности этого API. Кажется, что API выполняет частичный поиск строки по параметру символа, поэтому это не точное совпадение, что, на мой взгляд, является частью проблемы. - person KillerKode; 11.04.2019
comment
Интересно... Я запускаю это и получаю тот же сбой API. Спасибо за публикацию... Боюсь, котировки ценных бумаг с пунктуацией недоступны в alphavantage. У меня есть запрос, но я чувствую, что его последнее пристанище находится на их глубоком, темном жестком диске безнадежности. - person alfadog67; 11.04.2019

Вы можете 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, точки разрешены и не имеют особого значения. .

person Bouke    schedule 10.09.2018
comment
Да, мне удалось разобраться. Даже %2E не сработало, оказывается этот API заменяет все символы точки на - вместо (если символ находится в середине бегущей строки). Довольно раздражает, мне потребовалось некоторое время, чтобы понять, поскольку это не задокументировано. - person KillerKode; 18.09.2018
comment
Не ожидал такого нестандартного поведения. Странно, что не задокументировали, точка в торговых символах встречается очень часто. - person Bouke; 19.09.2018
comment
Не работает. Использовали SYMBOL_SEARCH для URBI. Затем я пытаюсь запросить TIME_SERIES_DAILY_ADJUSTED для URBI.MEX (пробовал URBI.MX, URBI-MEX, URBI-MX) и получаю неверный вызов API... - person Molasar; 17.11.2019