Запрос

Чтобы получить ответ о местоположении мобильного устройства, отправьте POST-запрос к ресурсу geolocation. Передайте данные в формате XML:
Локатор обработает данные из запроса в следующей последовательности:
  1. Точки доступа Wi-Fi.
  2. Сигналы сетей мобильной связи.
  3. 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>
Элементы
Элемент Описание Обязателен
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 две части:
  1. gzip — индикатор запроса с сжатыми данными;
  2. xml — параметр, содержащий сжатые данные XML.
В каждой части запроса укажите значение одного параметра после разделителя boundary и заголовка Content-Disposition с именем параметра. Значение параметра отделите от предшествующих заголовков пустой строкой.

Отправьте POST-запрос к ресурсу geolocation.

Заголовки
Заголовок Описание
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
Обозначает, что содержимое — это бинарные данные.