Интеграция API IpGeoBase Город по IP-адресу
Сервис позволяет определять местонахождения IP - адреса.
В базе сервиса IP – адреса РФ, Украина (с точностью до города). США, Канада, Европа и часть азии (с точностью до страны).
Сайт сервиса - http://ipgeobase.ru/
Документация по API - http://blog.ipgeobase.ru/?p=76
Регистрация / авторизация не требуется.
Параметры запроса.
- URL: http://ipgeobase.ru:7020/geo
- Метод: GET
- Заданный IP передается как параметр в URL.
- Формат ответа: по умолчанию – XML. Можно вывести данные в формате JSON, путем добавления параметра &json=1
Примеры запроса:
http://ipgeobase.ru:7020/geo?ip=109.254.254.155 (ответ – XML).
http://ipgeobase.ru:7020/geo?ip=109.254.254.155&json=1(ответ – JSON).
В ответе содержится: блок ip адресов, страна, город, регион, округ и координаты.
Недостатки: возвращает кириллические символы в кодировке windows-1251 -
CREATE PROCEDURE [dbo].[api_IpGeoBaseru_IPLocation_request]
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2)
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
DECLARE @IPStr nvarchar(max)
-- получение значений полей формы из @parameters
SELECT @IPStr = ISNULL( Value2 , '' ) FROM @parameters WHERE [Key] = 'IPStr'
IF LEN( ISNULL( @IPStr , '' ) ) = 0
SET @IPStr = N'178.219.186.12'
DECLARE @apiUrl1 nvarchar(max) = '' -- Финальная строка для отправки -- ФАКТИЧЕСКИ ЭТО Url
-- IP передается как параметр в Url
SET @apiUrl1 = 'http://ipgeobase.ru:7020/geo?ip='+ISNULL( @IPStr, '' )
-------------------------------------------------------------------------------------------
-- ОТЛАДКА
insert into as_trace ( header, text, username, code , created ) values( 'apiUrl1' , @apiUrl1 , @username, 'api_IpGeoBaseru_IPLocation_request' , GETDATE() )
-------------------------------------------------------------------------------------------
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result
, @apiUrl1 Url
-- не используется
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
-- select 'id' name, '5' value, '' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END
CREATE PROCEDURE [dbo].[api_IpGeoBaseru_IPLocation_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)
@username nvarchar(32)
AS
BEGIN
-- ОТЛАДКА
insert into as_trace ( header, text, username, code , created ) values( 'LEN @response ', LEN ( @response ) , @username, 'api_IpGeoBaseru_IPLocation_response' , GETDATE() )
insert into as_trace ( header, text, username, code , created ) values( '@response - 1 , 1024 ', SUBSTRING ( @response , 1 , 1024 ) , @username, 'api_IpGeoBaseru_IPLocation_response' , GETDATE() )
IF LEN( ISNULL( @response , '' ) ) =0
BEGIN
SELECT 'Ошибка!' AS Msg, 0 Result, 'Ошибка! Получена срока @response нулевой длины!' AS Response
RETURN
END
DECLARE @xml_STR Nvarchar(max)
SET @xml_STR = @response
DECLARE @xml xml -- переменная в которую преобразуем полученную строку
-- ПРИХОДИТ КОДИРОВКА encoding="windows-1251"
set @xml_STR = REPLACE( @xml_STR ,'UTF-8','UTF-16')
set @xml_STR = REPLACE( @xml_STR ,'windows-1251','UTF-16')
set @xml =convert (xml, @xml_STR)
DECLARE @exist_ipAnswer bit = 0
select @exist_ipAnswer = @xml.exist('/ip-answer')
IF @exist_ipAnswer = 0
BEGIN
SELECT 'Ошибка! В результате запроса @response нет корневого элемента ip-answer!' Msg, 0 Result, 'Ошибка! В результате запроса @response нет корневого элемента ip-answer!' Response
RETURN
END
-- Город Москва -- Регион Москва -- Округ Центральный федеральный округ -- Страна /RU
DECLARE @value_IP NVARCHAR(MAX) = N'' -- @value_IP
DECLARE @inetnum NVARCHAR(MAX) = N'' --
DECLARE @country_iso_code NVARCHAR(MAX)= N'' -- Страна RU
DECLARE @city NVARCHAR(MAX) = N'' -- Город Москва
DECLARE @region NVARCHAR(MAX) = N'' -- Регион Москва
DECLARE @district NVARCHAR(MAX) = N'' -- Округ Центральный федеральный округ "Центральный"
DECLARE @lat NVARCHAR(MAX) = N'' -- data_geo_lat
DECLARE @lon NVARCHAR(MAX) = N'' -- data_geo_lon
select @value_IP = @xml.value('/ip-answer[1]/ip[1]/@value' , 'nvarchar(200)' )
select @inetnum = @xml.value('/ip-answer[1]/ip[1]/inetnum[1]' , 'nvarchar(200)' )
select @country_iso_code = @xml.value('/ip-answer[1]/ip[1]/country[1]', 'nvarchar(200)' )
select @city = @xml.value('/ip-answer[1]/ip[1]/city[1]' , 'nvarchar(200)' )
select @region = @xml.value('/ip-answer[1]/ip[1]/region[1]' , 'nvarchar(200)' )
select @district = @xml.value('/ip-answer[1]/ip[1]/district[1]' , 'nvarchar(200)' )
select @lat = @xml.value('/ip-answer[1]/ip[1]/lat[1]' , 'nvarchar(200)' )
select @lon = @xml.value('/ip-answer[1]/ip[1]/lng[1]' , 'nvarchar(200)' )
-- SELECT 1
select 'Ok' Msg
, 1 Result
-- , @response Response -- ТАК при вызов из формы вернет оригинальный @response !!!
, 'Ваш IP: ' +IIF ( @value_IP = '', '' , @value_IP )
+'; Город: ' +IIF ( @city = '' , '' , @city )
+'; Регион: '+IIF ( @region = '' , '' , @region )
+'; Округ: ' +IIF ( @district = '', '' , @district )
+'; Страна: '
-- +IIF ( @country = '' , '' , @country ) + '-'
+IIF ( @country_iso_code = '' , '' ,@country_iso_code )
+'; Координаты : '+IIF ( @lat = '' , '' ,@lat ) + ' ' +IIF ( @lon = '' , '' ,@lon ) + '.'
AS Response
-- SELECT 2 Внешние действия
END
Примеры работы компонентов платформы Falcon Space
Примеры удобных таблиц и форм Примеры дашборда Примеры графиков и диаграмм Пример календаря Таблица с данными по API Пример вывода карты с точками Виды полей форм Пример виджета статистики Пример дерева иерархии Пример компонента Временная линия Пример карточки товаров Пример учета загрузки ресурса Пример Канбан доски Пример мастер формы Пример выгрузки документов Excel/Word Пример заполнения данных по ИНН- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности Falcon Space
- Подсистемы
- Дополнительные компоненты
- Интеграции Интеграция импорт и парсинг файла CSV Интеграция API DaData.ru подсказки по адресам Интеграция API IpGeoBase Город по IP-адресу Интеграция API DaData.ru Город по IP-адресу Генерация RSS в SQL процедуре Прием платежей через Яндекс.Кассу Онлайн-платежи. Интеграция с Робокассой (платежный шлюз) Телеграм боты и отправка сообщений в Telegram Zapier интеграция на платформе Falcon Space Интеграция Яндекс YML. Импорт-экспорт каталога товаров в YML Интеграция с Яндекс XML API Интеграция коллтрекинга МАНГО ОФИС (режим Площадка) Интеграция API Курсы валют Центрального Банка РФ Интеграция API Почта РФ Интеграция API Служба доставки СДЭК (CDEK) Интеграция API Служба доставки Деловые линии Интеграция API Яндекс.Вебмастер Сканирование штрих кодов и QR кодов через камеру и с картинок Видеочат. Интеграция с Vox Implant Получение данных контрагента по ИНН Базовая интеграция с Jitsi Meet (звонки с видео)
- HOWTO
- HOWTO Таблицы
- HOWTO Формы
- HOWTO JS
- HOWTO CSS
- HOWTO Верстка
- Решение проблем
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства
Бесплатное обучение разработке на Falcon Space
