местонахождение по ip

  • Автор темы Автор темы 7.UP
  • Дата начала Дата начала

7.UP

Проверянный
Принятый Кодер
Ofline
и так для начала запускаем delphi
кидаем на форму
sButton1, sEdit1, sMemo1

в коде в uses пишем
httpsend – для отправки запросов
ssl_openssl - для эмуляции работы с HTTPS.

потом в Form1: TForm1 пишем
Check: array [0 .. 10] of string; // массив для работы с парсингом
HTTP: THTTPSend;
HTML: tstringList;

добавляем перед {$R *.dfm} код парсинга
Код:
function Pars(T_, ForS, _T: String): String; // функция парсинга, нужна для парсинга информаций
var
  A, B: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
  A := Pos(T_, ForS);
  if A = 0 then
    Exit
  else
    A := A + length(T_);
  ForS := Copy(ForS, A, length(ForS) - A + 1);
  B := Pos(_T, ForS);
  if B > 0 then
    Result := Copy(ForS, 1, B - 1);
end;
после этого пишем на кнопку
Код:
HTTP := THTTPSend.Create; // создаем HTTP для работы синапсом
  HTML := tstringList.Create; // создаем для работы с парсингом
  begin
    sMemo1.Clear; // очищаем sMemo1
    if HTTP.HTTPMethod('GET','https://2ip.ua/ru/services/information-service/site-location?ip=' + sEdit1.Text + '&a=act') then  // работаем с ГЕТ запросом, берем ip из sEdit1
    begin
      HTML.LoadFromStream(HTTP.Document);
      HTML.Text := Utf8ToAnsi(HTML.Text); // переводим в нормальный вид
      begin  // парсинг всей инфы
        Check[1] := Pars('<td>Широта:</td>'  + #13#10 + '                <td>',HTML.Text,'</td>');
        Check[2] := Pars('<td>Долгота:</td>' + #13#10 + '                <td>',HTML.Text,'</td>');

        Check[3] := Pars('<td>Город:</td>'   + #13#10 + '                <td>',HTML.Text,'</td>');
        Check[4] := Pars('<td>Cтрана:</td>'  + #13#10 + '                <td>',HTML.Text,'</td>');
      end;
      /////////
      begin // Вывод в sMemo1
        sMemo1.Lines.Add('Широта: '  + Check[1]);
        sMemo1.Lines.Add('Долгота: ' + Check[2]);
        sMemo1.Lines.Add('============');
        sMemo1.Lines.Add('Город: ' + Check[3]);
        sMemo1.Lines.Add('Cтрана: ' + Check[4]);
      end;
    end;
  end;
  FreeAndNil(HTTP); // очищаем HTTP
  FreeAndNil(HTML); // очищаем HTML
и в папку с проектом кидаем, libeay32.dll, msvcr71.dll, ssleay32.dll
запускаем и смотрим
1PeHbsQm.webp
 
Вот нашёл у себя старенький кодик с копонентом (XMLDocument) очень простой

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  XMLDocument1.LoadFromFile('https://api.2ip.ua/geo.xml?ip=8.8.8.8');
  XMLDocument1.Active:= true;
  Edit1.Text:= XMLDocument1.DocumentElement.ChildNodes['ip'].Text;
  Edit2.Text:= XMLDocument1.DocumentElement.ChildNodes['country_code'].Text;
  Edit3.Text:= XMLDocument1.DocumentElement.ChildNodes['region_rus'].Text;
  Edit4.Text:= XMLDocument1.DocumentElement.ChildNodes['country_rus'].Text;
  Edit5.Text:= XMLDocument1.DocumentElement.ChildNodes['city'].Text;
  XMLDocument1.Active:= false;
end;
 
Назад
Сверху Снизу