powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Rest Client + SSL
25 сообщений из 59, страница 1 из 3
Delphi Rest Client + SSL
    #39882958
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, возникла проблема c сабжем. Предыстория тут https://www.sql.ru/forum/1309610-4/markirovka-lekarstvennyh-sredstv

Delphi Rest Client оказываетеся доступен только с поздних версий, что вызывает сильную проблему, так как проект у меня в Delphi 2007 и там установлена куча компонентов начала 2000-х, которые под эту IDE то еле нашел в свое время, когда восстанавливал этот проект. А под новые версии их точно нет. Так что теперь возникла такая вот дилемма:
1. Оставаться на Delphi 2007 и:
1.1. Пробовать решить через стандартные Indy (обновил до 10.5.5) или
1.2. Скачать какой то сторонний Delphi Rest под эту версию
Первое пробовал вчера целый день, решал кучу проблем, в конце концов вылазит окно как на скрине
Покапавшись в этой теме (почему то окрывается только в кэше гугла), не могу побороть

https://webcache.googleusercontent.com/search?q=cache:w2bwm1DGfHIJ:https://www.sql.ru/forum/1270559/indy-ssl-ne-ponimaet-ecdhe-ecdsa-x25519 &cd=2&hl=ru&ct=clnk&gl=ru

https://webcache.googleusercontent.com/search?q=cache:5DqhlC3n15kJ:https://www.sql.ru/forum/1270559-2/indy-ssl-ne-ponimaet-ecdhe-ecdsa-x25519 &cd=1&hl=ru&ct=clnk&gl=ru

Похоже нерешаемая проблема и даже самые последние перед смертью версии Indy не могут работать с последними версиями SSL?

Со сторонним Rest Clientтоже не срослось. Нашел вот такой
https://github.com/fabriciocolombo/delphi-rest-client-api
Но как назло у него нет версии под D2007, только D7 или D2010

2. Полностью апгрейдиться до версий Delphi, где есть встроенный Delphi Rest Client. Правда придется не только кучу компонентов устанавливать но и как то решать вопрос с теми, которые уже не могут быть установлены, то есть править придется очень много

Какой путь посоветуете выбрать? По уму бы № 2, но боюсь, что увязну в портации проекта и на саму маркировку тупо не хватит времени. Если 1.1, то похоже путь в никуда, стандартными indy это не решить?
Остается небольшая надежда на 1.2 - может есть какая то возможность установить dpk для D7 или D2010 в D2007? У меня не получилось. Или еще какой-нибудь сторонний Delphi Rest Client, который можно поставить на Delphi 2007?
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39882966
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Indy вполне себе живой
2. Версия под D7 никак не отличается от версии под 2007.
3. Можно также попробовать ICS, там есть компоненты для REST
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39882971
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

у сервера https://api.sb.mdlp.crpt.ru/ - GOST R 34.10-2012 512,
сертификат выдан тестовым УЦ.


Варианты:
WinInet.dll
WinHTTP.dll
Сборка OpenSSL с ГОСТ-ом, которую получится использовать в Delphi 2007
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39882974
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010
Со сторонним Rest Clientтоже не срослось. Нашел вот такой
https://github.com/fabriciocolombo/delphi-rest-client-api
Но как назло у него нет версии под D2007, только D7 или D2010


в описании вижу:
restclient.ConnectionType := hctWinINet;

Должно помочь
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39882979
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, всем спасибо за подсказки, попробую
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885891
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжение марлезонского балета. Из клиентов остановился на synapse (с остальным - Indy, Delphi Rest Api и прочее - не срослось), вроде наладил работу с http, но с https возникла затычка Выдает внутреннюю ошибку сервера (500), в result получаю целиком body, которое отправляю в ЧЗ Как думаете, в чем может быть загвоздка? Код:
Код: 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.
var
  AURL, APOSTData: string;
  APOSTData2: TStringList;
  httpsend: THTTPSend;
  stream:tstringstream;
  result:TStringList;
begin
  AURL := 'https://api.stage.mdlp.crpt.ru/api/v1/documents/send';
  APOSTData2 := TStringList.create;
  APOSTData2.LoadFromFile('C:\doc.txt');
  stream:=TStringStream.Create('');
  APOSTData2.SaveToStream(stream);

  httpsend:=THTTPSend.Create;
  httpsend.MimeType:='application/json';
  httpsend.Headers.Add('Authorization: token 5607d0e8-c76c-4f0a-a6e7-f30f03f26e7b');
  httpsend.Document.LoadFromStream(stream);

  try
    httpsend.HTTPMethod('post', AURL);
    result := TStringList.Create;
    result.LoadFromStream(httpsend.Document);
  finally
    showmessage(inttostr(httpsend.ResultCode));
    result.SaveToFile('C:\mark2.txt');
  end;
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885955
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если приходит 500. Смотртте логи на сервере.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885969
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я их могу посмотреть, они ж на сервере
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885973
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010
Как я их могу посмотреть, они ж на сервере


Да не приходит у тебя 500, успокойся, смотри на уровень ниже, от сокета... код и текст ошибку)
ну или попробуй в IE открыть
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885975
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010
Продолжение марлезонского балета. Из клиентов остановился на synapse (с остальным - Indy, Delphi Rest Api и прочее - не срослось), вроде наладил работу с http, но с https возникла затычка Выдает внутреннюю ошибку сервера (500), в result получаю целиком body, которое отправляю в ЧЗ Как думаете, в чем может быть загвоздка? Код:
Код: 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.
var
  AURL, APOSTData: string;
  APOSTData2: TStringList;
  httpsend: THTTPSend;
  stream:tstringstream;
  result:TStringList;
begin
  AURL := 'https://api.stage.mdlp.crpt.ru/api/v1/documents/send';
  APOSTData2 := TStringList.create;
  APOSTData2.LoadFromFile('C:\doc.txt');
  stream:=TStringStream.Create('');
  APOSTData2.SaveToStream(stream);

  httpsend:=THTTPSend.Create;
  httpsend.MimeType:='application/json';
  httpsend.Headers.Add('Authorization: token 5607d0e8-c76c-4f0a-a6e7-f30f03f26e7b');
  httpsend.Document.LoadFromStream(stream);

  try
    httpsend.HTTPMethod('post', AURL);
    result := TStringList.Create;
    result.LoadFromStream(httpsend.Document);
  finally
    showmessage(inttostr(httpsend.ResultCode));
    result.SaveToFile('C:\mark2.txt');
  end;



Используй:
httpsend.Sock.LastError и httpsend.Sock.LastErrorDesc


HTTP [500 : нет информации]
Sock [11004 : Valid name, no data record of requested type] = вот что у тебя

+

// от WinHTTP: Не удается разрешить имя или адрес сервера
// от WinInet: Ошибка: 12007 Не удалось определить адрес сервера, проверьте сетевое подключение.(Service Name Not Resolved)
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885978
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010
Продолжение марлезонского балета. Из клиентов остановился на synapse (с остальным - Indy, Delphi Rest Api и прочее - не срослось), вроде наладил работу с http, но с https возникла затычка Выдает внутреннюю ошибку сервера (500), в result получаю целиком body, которое отправляю в ЧЗ Как думаете, в чем может быть загвоздка?


Напомни мне еще раз, по https у ЧЗ - ГОСТ?
Если Да - то почему игнорируешь сообщение выше про WinInet и остановился на synapse?
Или можешь из synapse работать с ГОСТ-ом?
Для "самопроверки" - https://cpca.cryptopro.ru/
synapse - Sock [10061 : Connection refused]
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885984
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012, не игнорю, Delphi Rest Client API (DRCA) вообще не работает у меня, точнее выдает ошибку 400, даже с обычным http
Как не пинал его с разными опциями (restclient.ConnectionType := hctWinINet, verifecert = и true, и false), не взлетает (см. скрин)
По нему еще примеров нифига нет, а по демкам не разобраться.
Значит synapse вообще получается не катит? Блин да что за засада то! Остается получается разбираться в DRCA либо с Indy мучаться?
Indy 10.6 у меня тоже не работает даже с простым http, synapse единственный, кто хотя бы в http работает
Может подскажете что с DRCA у меня не так? Так настроек то вообще хрен да маленько, непонятно даже как header добавить, не понимаю, почему не работает
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  vPerson : TPerson;
  vAuth: TAuth;
begin
  //vPerson := TPerson.NewFrom(123, 'Fabricio', 'fabricio.colombo.mva@gmail.com');
  vAuth:=TAuth.NewAuth('9199fe04-42c3-4e81-83b5-120eb5f129f2', '01db16f2-9a4e-4d9f-b5e8-c68f12566fd5', '6d30ff5df90437f98c443317f0beda9cdf626117', 'SIGNED_CODE');
  RestClient1.Resource('http://api.stage.mdlp.crpt.ru/api/v1/auth')
             .Accept(RestUtils.MediaType_Json)
             .ContentType(RestUtils.MediaType_Json)
//          .Post(vPerson);
             .Post(vAuth);
  ShowMessage(Inttostr(RestClient1.ResponseCode));



TAuth мой класс по аналогии с его TPerson

Код: 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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
  type
 {$METHODINFO ON}
  TPerson = class(TObject)
 {$METHODINFO OFF}
   public
    id: Integer;
    name: String;
    email: String;
    createDate: TDateTime;
    class function NewFrom(Id: Integer; Name, EMail: String): TPerson;
  end;

type
 {$METHODINFO ON}
  TAuth = class(TObject)
   {$METHODINFO OFF}
 public
    client_secret: String;
    client_id: String;
    user_id: String;
    auth_type: String;
  class function NewAuth(client_secret, client_id, user_id, auth_type: String): TAuth;
  end;

implementation

{ TPerson }

class function TPerson.NewFrom(Id: Integer; Name, EMail: String): TPerson;
begin
  Result := TPerson.Create;
  Result.Id := Id;
  Result.Name := Name;
  Result.EMail := EMail;
end;

class function TAuth.NewAuth(client_secret, client_id, user_id, auth_type: String): TAuth;
begin
  Result := TAuth.Create;
  Result.client_secret := client_secret;
  Result.client_id := client_id;
  Result.user_id := user_id;
  Result.auth_type := auth_type;
end;
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885985
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

400 - Bad Request (Неправильный запрос).
Сниффер в руки и смотри, что он отправляет, сверяй с тем, что тебе предоставили в другой ветке для примера.

Indy...? Что использует для https, опять те же dll, что и synapse?

WinInet\WinHTTP - через них путь для TLS с ГОСТ.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39885986
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012, спасибо за помощь! буду пытаться
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886027
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я через WinhttpRequest подключился к МДЛП, идет на ура.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886042
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V.Borzov, можете пример кода привести?
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886060
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В самом крайнем случае можно сетевой обмен реализовать через DLL, в которую запихнуть либо http клиент из новых версий (основан на WinHTTP), либо вообще подключить curl.
Но вообще WinInet в плане http запросов очень простой, буквально одна функция для простого get.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886114
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в совсем крайних случаях говорят помогает пустить шифрованный трафик через stunnel: https://www.cryptopro.ru/products/other/stunnel-msspi
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886143
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010
V.Borzov, можете пример кода привести?

Вот пример в фастскрипте (авторизация пройдена, токен уже получен):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  WinHttp := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  try 
      WinHttp.Open('POST','https://api.sb.mdlp.crpt.ru/api/v1/documents/outcome',0);
      WinHttp.setRequestHeader('Content-type', 'application/json');
      WinHttp.setRequestHeader('Cache-Control','no-cache');
      WinHttp.setRequestHeader('Accept-Language','ru');
      WinHttp.setRequestHeader('Authorization', 'token '+token);
      WinHttp.Send('{"filter":{},"start_from":0,"count":100'+'}'); 
      if WinHttp.Status <> 200 then RaiseException('outcome: status: '+vartostr(winhttp.status)+',text: '+vartostr(winhttp.statustext));
      strvalue := WinHttp.ResponseText();                   
  finally
    WinHTTP := unassigned;
  end;


Перед этим было получение токена: обращение по http (можно и в synapse даже это сделать), получение кода для подписание, потом само подписания, отправка кода и получение токена. Дальше идет подключение по https, приведённое в примере.
Я тоже воткнулся в ошибку 500 в synapse и отложил пока это всё, заинтересовавшись Winhttp, которому и OpenSSL не потребовался.

Для получения запросов рекомендую всё-таки обращаться не к WinHttp.ResponseText, ибо он взбрыкнёт с кодировкой рано или поздно, а использовать WinHTTP.ResponseStream.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886173
yooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте в файрфокс поставить расширение RESTClient и отсылать запрос через него, заодно и полные ответы сервера увидите. Мне не так давно сильно помогло. После этого использовал indy для d7.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886222
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yooo
Попробуйте в файрфокс поставить расширение RESTClient и отсылать запрос через него, заодно и полные ответы сервера увидите. Мне не так давно сильно помогло. После этого использовал indy для d7.


и работать по http?
а если https по гост?

как-то странно, всё обходят стороной..
Или Я ошибаюсь и там нет никакого ГОСТ-а в TLS, на продуктивном сервере?


p.s. // не имею никакого отношения к ЧЗ, просто глянул описания и на форумах - ссылки на API - а там https по ГОСТ
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886226
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov

Я тоже воткнулся в ошибку 500 в synapse и отложил пока это всё, заинтересовавшись Winhttp, которому и OpenSSL не потребовался.


написан он так... когда со своими сервисами словил - выяснил, что никуда запрос и не уходил и сервис не давал 500 код...
нужно на сокетную ошибку еще смотреть - пример приводил выше.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886227
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012

написан он так... когда со своими сервисами словил - выяснил, что никуда запрос и не уходил и сервис не давал 500 код...

Было ещё наблюдение какой-то проблемы с "Authorization token ТОКЕН", но дальше не полез, забросил. То есть synapse там что-то пытался подменить своими данными.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886280
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012
Или можешь из synapse работать с ГОСТ-ом?
подружить synapse с ГОСТ возможно ?
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886339
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer
sql2012
Или можешь из synapse работать с ГОСТ-ом?
подружить synapse с ГОСТ возможно ?


если внутри dll будет вызов СКЗИ с ГОСТ - да
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Rest Client + SSL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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