Запрос
Чтобы получить ответ о местоположении мобильного устройства, отправьте POST-запрос к ресурсу geolocation
. Передайте данные в формате XML:
Яндекс Локатор обработает данные из запроса в следующей последовательности:
- Точки доступа Wi-Fi.
- Сигналы сетей мобильной связи.
- IP-адрес.
Если Яндекс Локатор успешно определит местоположение, он вернет ответ с координатами точки и радиусом погрешности. В противном случае вы получите сообщение об ошибке.
Для API Яндекс Локатора установлен лимит на количество запросов в секунду (RPS): до 1800. Считается как сумма запросов со стороны клиента и со стороны сервера.
Стандартный запрос
Передайте данные о мобильном устройстве и его окружении в параметре запроса xml
.
Host: api.lbs.yandex.net
POST /geolocation
xml=<ya_lbs_request>
<common>
<version>1.0</version>
<api_key>ABM6WU0BAAAANfFuIQIAV1pUEYIBeogyUNvVbhNaJPWeM-AAAAAAAAAAAACRXgDsaYNpZWpBczn4Lq6QmkwK6g==</api_key>
</common>
<gsm_cells>
<cell>
<countrycode>250</countrycode>
<operatorid>2</operatorid>
<cellid>197403650</cellid>
<lac>9900</lac>
<signal_strength>-80</signal_strength>
<age>1000</age>
</cell>
</gsm_cells>
<wifi_networks>
<network>
<mac>2CD02D814C80</mac>
<signal_strength>-68</signal_strength>
<age>500</age>
</network>
<network>
<mac>E4AA5DE28CD0</mac>
<signal_strength>-60</signal_strength>
<age>500</age>
</network>
</wifi_networks>
<ip>
<address_v4>95.108.173.231</address_v4>
</ip>
</ya_lbs_request>
curl -X POST 'http://api.lbs.yandex.net/geolocation' -d 'xml=<ya_lbs_request><common><version>{{ version }}</version><api_key>ABM6WU0BAAAANfFuIQIAV1pUEYIBeogyUNvVbhNaJPWeM-AAAAAAAAAAAACRXgDsaYNpZWpBczn4Lq6QmkwK6g==</api_key></common><gsm_cells><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>197403650</cellid><lac>9900</lac><signal_strength>-80</signal_strength><age>1000</age></cell></gsm_cells><wifi_networks><network><mac>2CD02D814C80</mac><signal_strength>-68</signal_strength><age>500</age></network><network><mac>E4AA5DE28CD0</mac><signal_strength>-60</signal_strength><age>500</age></network></wifi_networks><ip><address_v4>95.108.173.231</address_v4></ip></ya_lbs_request>'
Элементы
Элемент | Описание | Обязателен |
---|---|---|
ya_lbs_request | Корневой элемент. | Да |
common | Метаданные запроса. | Да |
version | Версия API Яндекс Локатора: 1.0 . |
Да |
api_key | Ключ доступа к API Яндекс Локатора. | Да |
gsm_cells | Содержит один или несколько элементов cell с данными о соте. |
Нет |
cell | Содержит идентификационные коды одной соты, а также данные об уровне сигнала. | Хотя бы один элемент |
countrycode | Код страны. | Да |
operatorid | Код сети мобильной связи. | Да |
cellid | Идентификатор соты. | Да |
lac | Код местоположения. | Да |
signal_strength | Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования. | Нет |
age | Время в миллисекундах с момента получения данных мобильным устройством. Элемент зарезервирован для будущего использования. | Нет |
wifi_networks | Содержит один или несколько элементов network с данными о точках доступа Wi-Fi. |
Нет |
network | Содержит MAC-адрес точки доступа. Дополнительно может содержать данные об уровне сигнала. | Хотя бы один элемент |
mac | MAC-адрес в символьном представлении без разделителей. Например: 123456789ABC . |
Да |
signal_strength | Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования. | Нет |
age | Время в миллисекундах с момента получения данных мобильным устройством. Элемент зарезервирован для будущего использования. | Нет |
ip | Содержит элемент address_v4 . |
Нет |
address_v4 | IP-адрес мобильного устройства, назначенный оператором мобильного интернета. Если IP-адрес отсутствует или некорректен, то Яндекс Локатор будет использовать адрес отправителя из заголовка IP-пакета. Этот адрес может быть подменен прокси-сервером, через который прошел IP-пакет. | Да |
Запрос c сжатыми данными
Сожмите XML с данными утилитой gzip и передайте его в запросе, указав заголовок Content-Type: multipart/from-data
и параметр gzip
с любым непустым значением.
Включите в запрос с типом multipart/from-data
две части:
gzip
— индикатор запроса с сжатыми данными;xml
— параметр, содержащий сжатые данные XML.
В каждой части запроса укажите значение одного параметра после разделителя boundary
и заголовка Content-Disposition
с именем параметра. Значение параметра отделите от предшествующих заголовков пустой строкой.
Отправьте POST-запрос к ресурсу geolocation
.
POST /geolocation?gzip=1
Host: api.lbs.yandex.net
Accept-Encoding: identity
Content-Type: multipart/form-data; boundary=YANDEXLOCATORBOUNDARY
Content-length: 606
--YANDEXLOCATORBOUNDARY
Content-Disposition: form-data; name="gzip"
1
--YANDEXLOCATORBOUNDARY
Content-Disposition: form-data; name="xml"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
СЖАТЫЕ ДАННЫЕ
--YANDEXLOCATORBOUNDARY--
curl -X POST 'http://api.lbs.yandex.net/geolocation?gzip=1' -H 'Content-Type: multipart/form-data' -F xml=@data.xml.gz
Заголовки
Заголовок | Описание |
---|---|
Accept-Encoding: identity |
Обозначает, что содержимое запроса следует принимать в любой кодировке. |
Content-Type: multipart/form-data; boundary=_разделитель_ |
Тип запроса для передачи файлов внутри HTTP-запроса. Разделитель boundary — произвольная строка из латинских букв и цифр. |
Content-length: _целое число |
Длина запроса в байтах начиная со второй строки после этого заголовка. |
Content-Disposition: form-data; name="_имя_параметра_" |
Начало части запроса для передачи параметра, объявленного в name . Предваряется разделителем. Значение параметра указывается после дочерних заголовков и пустой строки. |
Content-Type: application/octet-stream |
Обозначает, что вложенные данные представляют собой файл неуказанного типа. |
Content-Transfer-Encoding: binary |
Обозначает, что содержимое — это бинарные данные. |
Описание
Корневой элемент.
Обязателен
Да
Описание
Метаданные запроса.
Обязателен
Да
Описание
Версия API Яндекс Локатора: 1.0
.
Обязателен
Да
Описание
Ключ доступа к API Яндекс Локатора.
Обязателен
Да
Описание
Содержит один или несколько элементов cell
с данными о соте.
Обязателен
Нет
Описание
Содержит идентификационные коды одной соты, а также данные об уровне сигнала.
Обязателен
Хотя бы один элемент
Описание
Код страны.
Обязателен
Да
Описание
Код сети мобильной связи.
Обязателен
Да
Описание
Идентификатор соты.
Обязателен
Да
Описание
Код местоположения.
Обязателен
Да
Описание
Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования.
Обязателен
Нет
Описание
Время в миллисекундах с момента получения данных мобильным устройством. Элемент зарезервирован для будущего использования.
Обязателен
Нет
Описание
Содержит один или несколько элементов network с данными о точках доступа Wi-Fi.
Обязателен
Нет
Описание
Содержит MAC-адрес точки доступа. Дополнительно может содержать данные об уровне сигнала.
Обязателен
Хотя бы один элемент
Описание
MAC-адрес в символьном представлении без разделителей. Например: 123456789ABC
.
Обязателен
Да
Описание
Содержит элемент address_v4
.
Обязателен
Нет
Описание
IP-адрес мобильного устройства, назначенный оператором мобильного интернета. Если IP-адрес отсутствует или некорректен, то Яндекс Локатор будет использовать адрес отправителя из заголовка IP-пакета. Этот адрес может быть подменен прокси-сервером, через который прошел IP-пакет.
Обязателен
Да
Обозначает, что содержимое запроса следует принимать в любой кодировке.
Тип запроса для передачи файлов внутри HTTP-запроса.
Разделитель boundary
— произвольная строка из латинских букв и цифр.
Длина запроса в байтах начиная со второй строки после этого заголовка.
Начало части запроса для передачи параметра, объявленного в name
. Предваряется разделителем.
Значение параметра указывается после дочерних заголовков и пустой строки.
Обозначает, что вложенные данные представляют собой файл неуказанного типа.
Обозначает, что содержимое — это бинарные данные.