powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / чтение API
14 сообщений из 14, страница 1 из 1
чтение API
    #40037760
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте

работаю с API

если мой запрос ввести в обозреватель

https://api.keepa.com/tracking?key=9abpi7cn3q3rusa5is3cqji4urg46t1qpdko2vp6rolklb9ghs5laagonasf563t&type=get&asin=B005D6FXEY

то вижу вполне нормальный ответ

{"timestamp":1611249779495,"tokensLeft":300,"refillIn":56774,"refillRate":5,"tokenFlowReduction":0.0,"tokensConsumed":0,"processingTimeInMs":0,"error":{"type":"trackingNotFound","message":"There was no tracking for the specified ASIN","details":""}}
но в программе не получаю этого
использую эту функцию


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function HttpGetUrl(url: string; idHttp: TIdHttp): string;
var
  M: TStringStream;
begin
  M := TStringStream.Create('');
  try
      IdHTTP.Get(url, m);
      if IdHTTP.ResponseCode = 502 then
        begin
          result := 'Ошибка 502. ' + url;
          freeandnil(m);
          exit;
        end;
  except
      on e: exception do
        begin
          result := 'Ошибка *HttpGetUrl*. ' + url;
          if Assigned(m) then freeandnil(m);
        end;
  end;// try except
    result := m.DataString;
    M.SaveToFile('result.txt');
    freeandnil(m);
end;


в файле вижу

? 5???EU9§k:?·Q(?ty+­IbK!???V??s?????????n·u?o˜o;?uU2vq?¤¦«on/uoZ.?©i7vm:P? °?)S???: I'~a?2???KA?o{??G?S?t.u???f???e#w4<a»?A|y4g
y???{?<u


memo отображает только первые 2 символа

пытался менять кодировку соединения, но не приводит к результатам

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
чтение API
    #40037771
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия Delphi какая?
...
Рейтинг: 0 / 0
чтение API
    #40037772
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Embarcadero® Delphi 10.2 Version 25.0.26309.314
...
Рейтинг: 0 / 0
чтение API
    #40037775
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StringStream читает строку UTF16. А в выдаваемом тебе ответе UTF-8.
...
Рейтинг: 0 / 0
чтение API
    #40037783
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
результат вывожу через функцию


result := UTF8ToWideString (m.DataString)



но все равно не хочет работать
...
Рейтинг: 0 / 0
чтение API
    #40037784
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terlalex,

А если заменить TStringStream на TMemoryStream?
...
Рейтинг: 0 / 0
чтение API
    #40037790
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всеравно результат

‹ =ЋЛ
В@EeИєHЗ'v'‚PР.Ф:©¶“2I)"ю»QФнЙ№7ч:dq]…]Z;]¬нj9]Н2єaд=6Е,П3HШ„¶-#;·pt‚ЉѕЃ]KгэPK 5уIюkЪRдЎCЇ0ѓ>QЌМ!^О: Њю`L‰ђ{ЇҐ ЙХ7•*’
СC:—Эе}<_1Ў›Hжgљ†’‘+о±M@o6§ІТ GqЎХ? Пзb»й№щ


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
function HttpGetUrl(url: string; idHttp: TIdHttp): string;
var
  M , m1 : TMemoryStream;
  i:integer ;
  StringBytes: TBytes;

begin
  M := TMemoryStream.Create;

    try
     IdHTTP.Get(url, m);
        if IdHTTP.ResponseCode = 502 then
       begin
          result := 'Ошибка 502. ' + url;
          freeandnil(m);
          exit;
        end;
  except
      on e: exception do
        begin
          result := 'Ошибка *HttpGetUrl*. ' + url;
          if Assigned(m) then freeandnil(m);
        end;
  end;// try except

  m.Position := 0;
  SetLength(StringBytes, m.Size);
  m.ReadBuffer(StringBytes, m.Size);
  M.SaveToFile('res.txt');
end;
...
Рейтинг: 0 / 0
чтение API
    #40037792
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terlalex
результат вывожу через функцию


result := UTF8ToWideString (m.DataString)



но все равно не хочет работать
m.DataString - это уже не правильно.
Не трахай себе и людям мозг.

result:=IdHTTP.Get(url);
...
Рейтинг: 0 / 0
чтение API
    #40037793
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще лучше без Indy через THTTPClient/TNetHTTPClient.

Result:=HTTP.Get(URL).ContentAsString;
...
Рейтинг: 0 / 0
чтение API
    #40037798
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую эту функцию
но опять нет результата


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
   function GetUrlContent(const Url: string): UTF8String;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1023] of byte;
  BytesRead: dWord;
  StrBuffer: UTF8String;
begin
  Result := '';
  NetHandle := InternetOpen('Delphi 2009', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(NetHandle) then
    try
      UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
      if Assigned(UrlHandle) then
        try
          repeat
            InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
            SetString(StrBuffer, PAnsiChar(@Buffer[0]), BytesRead);
            Result := Result + StrBuffer;
          until BytesRead = 0;
        finally
          InternetCloseHandle(UrlHandle);
        end
      else
        raise Exception.CreateFmt('Cannot open URL %s', );
    finally
      InternetCloseHandle(NetHandle);
    end
  else
    raise Exception.Create('Unable to initialize Wininet');
end;
...
Рейтинг: 0 / 0
чтение API
    #40037799
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так получилось !

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 function GetURL(const AURL: string): string;
var
  HttpClient: THttpClient;
  HttpResponse: IHttpResponse;
begin
  HttpClient := THTTPClient.Create;
  try
    HttpResponse := HttpClient.Get(AURL);
    Result := HttpResponse.ContentAsString();
  finally
    HttpClient.Free;
  end;
end;



Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
чтение API
    #40037802
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terlalex,

отдельный HttpResponse: IHttpResponse; - лишний.
...
Рейтинг: 0 / 0
чтение API
    #40038270
Фотография aleksandr-pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terlalex,а не похоже ли это на сжатый трафик ?
я с таким сталкивался когда то, сервер отдавал данные в сжатом виде то есть банально gzip indy до последних версий вроде не умеет их на лету распаковвывать
...
Рейтинг: 0 / 0
чтение API
    #40038271
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleksandr-proа не похоже ли это на сжатый трафик ?

Ну, наверное он не полный идиот и догадался проверить заголовки на признак компрессии...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / чтение API
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]