Запрос

Чтобы получить ответ о местоположении мобильного устройства, отправьте POST-запрос к ресурсу geolocation. Передайте данные в формате JSON:
Локатор обработает данные из запроса в следующей последовательности:
  1. Точки доступа Wi-Fi.
  2. Сигналы сетей мобильной связи.
  3. IP-адрес.

Если Локатор успешно определит местоположение, он вернет ответ с координатами точки и радиусом погрешности. В противном случае вы получите сообщение об ошибке.

Стандартный запрос

Передайте данные о мобильном устройстве и его окружении в параметре запроса json.
Host: api.lbs.yandex.net
POST /geolocation

json={
   "common": {
      "version": "1.0",
      "api_key": "ABM6WU0BAAAANfFuIQIAV1pUEYIBeogyUNvVbhNaJPWeM-AAAAAAAAAAAACRXgDsaYNpZWpBczn4Lq6QmkwK6g=="
   },
   "gsm_cells": [
       {
          "countrycode": 250,
          "operatorid": 2,
          "cellid": 197403650,
          "lac": 9900,
          "signal_strength": -80,
          "age": 1000
       }
   ],
   "wifi_networks": [
       {
          "mac": "2CD02D814C80",
          "signal_strength": -68,
          "age": 500,
       },
       {
          "mac": "E4AA5DE28CD0",
          "signal_strength": -60,
          "age": 500,
       }
   ],
   "ip": {
     "address_v4": "95.108.173.231"
   }
}
Ключи
Объект Описание Обязателен
common

Метаданные запроса.

Да
version

Версия API Локатора: 1.0.

Да
api_key

Ключ доступа к API Локатора.

Да
gsm_cells

Массив объектов, каждый из которых описывает одну соту. Необходим хотя бы один объект в массиве.

Нет
countrycode

Код страны.

Да
operatorid

Код сети мобильной связи.

Да
cellid

Идентификатор соты.

Да
lac

Код местоположения.

Да
signal_strength

Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования.

Нет
age

Время в миллисекундах с момента получения данных через программный интерфейс мобильного устройства. Элемент зарезервирован для будущего использования.

Нет
wifi_networks

Массив объектов, каждый из которых описывает одну точку доступа Wi-Fi. Необходим хотя бы один объект.

Нет
mac MAC-адрес в символьном представлении без разделителей. Например: 123456789ABC. Да
signal_strength

Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования.

Нет
age

Время в миллисекундах с момента получения данных через программный интерфейс мобильного устройства. Элемент зарезервирован для будущего использования.

Нет
ip

Содержит IP-адрес.

Нет
address_v4

IP-адрес мобильного устройства, назначенный оператором мобильного интернета.

Если IP-адрес отсутствует или некорректен, Локатор будет использовать адрес отправителя из заголовка IP-пакета. Этот адрес может быть подменен прокси-сервером, через который прошел IP-пакет.

Да

Запрос c сжатыми данными

Сожмите JSON с данными утилитой gzip и передайте его в запросе, указав заголовок Content-Type: multipart/from-data и параметр gzip с любым непустым значением.

Включите в запрос с типом multipart/from-data две части:
  1. gzip — индикатор запроса с сжатыми данными;
  2. json — параметр, содержащий сжатые данные JSON.
В каждой части запроса укажите значение одного параметра после разделителя 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
Обозначает, что содержимое — это бинарные данные.