Запрос
geolocation
. Передайте данные в формате XML:- Точки доступа Wi-Fi.
- Сигналы сетей мобильной связи.
- IP-адрес.
Если Локатор успешно определит местоположение, он вернет ответ с координатами точки и радиусом погрешности. В противном случае вы получите сообщение об ошибке.
Стандартный запрос
Передайте данные о мобильном устройстве и его окружении в параметре запроса 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>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>'
- Элементы
-
Элемент Описание Обязателен 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-пакет.
Да Элемент Описание Обязателен 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
Обозначает, что содержимое — это бинарные данные. Заголовок Описание 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
Обозначает, что содержимое — это бинарные данные.