powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Rest Client + SSL
25 сообщений из 59, страница 2 из 3
Delphi Rest Client + SSL
    #39886342
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V.Borzov, благодарю за помощь! WinHTTP тоже заработал у меня с простым http, но с https опять не взлетает (
Выдается вот такая ошибка и это как я понимаю вообще не ответ сервера, а какая внутренняя хрень WinHTTP (см. скрин)
мой код:
Код: 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.
var
   WHttp: Variant;
   AURL, APOSTData: string;
   APOSTData2: TStringList;
   result:TStringList;
begin
  WHttp := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  try
     AURL := 'https://api.stage.mdlp.crpt.ru/api/v1/documents/send';
     WHttp.Open('POST', AURL, 0);
     WHttp.setRequestHeader('Content-type', 'application/json');
     WHttp.setRequestHeader('Cache-Control','no-cache');
     WHttp.setRequestHeader('Accept-Language','ru');
     WHttp.setRequestHeader('Authorization', 'token 905234d7-c074-4bda-b769-2f7d15162573');

     APOSTData2 := TStringList.create;
     APOSTData2.LoadFromFile('C:\doc.txt');
    
     try
        WHttp.Send(APOSTData2.Text);
     finally
        if WHttp.Status <> 200 then ShowMessage('outcome: status: '+vartostr(whttp.status)+',text: '+vartostr(whttp.statustext));
        result.Add(WHttp.ResponseText());
        result.SaveToFile('C:\mark2.txt');
     end;
  finally
    WHTTP := unassigned;
  end;
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886353
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

какой IP у api.stage.mdlp.crpt.ru ?
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886363
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

арт2010, А в какой момент вылетает ошибка? После какой операции? Я подумал сначала, что дело в асинхронном выводе, и при нем надо сделать Send, а потом выполнять HTTP.WaitForResponse(10) (то есть 10 секунд ждем ответа). Если функция вернула false, то это как раз означает, что данные еще не готовы, функция еще выполняется, надо ждать далее. И далее либо снова запускаем WaitForResponse(сек) и ждем, пока true в ответ не получим, либо уходим, решив, что ждать бесполезно. Но для асинхронной работы надо, чтобы в Open второй вариант был = 1 (или true), у тебя же 0 стоит. Значит функция Send должна выполнить запрос и вернуть готовый результат.

И вообще я так и не добрался до тестового стенда, меня не пускало, а техподдержка ответ если и дала той фирме, которая делала запрос на стенд (их IP фиксированный был указан в заявке), то очень поздно. Потому работаю с песочницей, там ограничений по IP никаких нет, к тому же там присутствуют другие участники, можно с ними данными общаться. Может это сам тестовый стенд мозги компостирует.
И в тестовом стенде один будешь сидеть изолированно, сам себе создавать участников и от них создавать для себя же данных. Удобнее, когда они есть. Спросил знакомого поставщика, он тебе выделил SGTINы, приходуешь.

Вообще обязательно зарегистрируйся в форуме ЧЗ, там сейчас активность резко возросла. Темы подключения тоже обсуждаются.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886364
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт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?

Вы можете использовать компонент TScHttpWebRequest: https://www.devart.com/sbridge/docs/tschttpwebrequest.htm, который поддерживает как HTTP так и HTTPS протоколы, для работы с Rest серверами.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886384
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012,
185.196.171.27
Но он, во-первых, не прописан ни в каких ДНС, поэтому либо напрямую IP указывать, либо в Hosts прописать, о чем они и пишут в своей краткой инструкции, и вообще ничего не ответит на твой IP, ибо надо послать сначала запрос в ЧЗ, чтобы тебя подключили к этому стенду, указав свой IP, то есть его надо зафиксировать сначала у себя, а потом недели через 2, может, ЧЗ и подключит. А до этого будет тупо молчать. Но ТС пишет, что получил токен (это делается по http-протоколу). А вот по Https -не получается.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886390
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov
sql2012,
185.196.171.27
Но он, во-первых, не прописан ни в каких ДНС, поэтому либо напрямую IP указывать, либо в Hosts прописать, о чем они и пишут в своей краткой инструкции, и вообще ничего не ответит на твой IP, ибо надо послать сначала запрос в ЧЗ, чтобы тебя подключили к этому стенду, указав свой IP, то есть его надо зафиксировать сначала у себя, а потом недели через 2, может, ЧЗ и подключит. А до этого будет тупо молчать. Но ТС пишет, что получил токен (это делается по http-протоколу). А вот по Https -не получается.


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

3.5. Установка защищенного соединения к API по TLS (https)
Обратить внимание: Если Участник, к которому относится пользователь, Резидент, то после процедур аутентификации и авторизации все методы API должны вызываться с ипользованием HTTPS протокола. Для взаимодействия по https используется ГОСТ Р 34.10-2012 сертификат.
Перед установкой соединения необходимо выполнить следующие настройки:
1) Общие настройки
 в операционной системе Windows (7, 10) добавить запись DisableClientExtendedMasterSecret (dword) в реестре HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
со значением 1 (т.к. Windows по-умолчанию блокирует подобные соединения)
2) Настройки для Продуктивного контура
 адрес API
http://api.mdlp.crpt.ru
https://api.mdlp.crpt.ru
 Обратите внимание: для взаимодействия по https используется ГОСТ сертификат от Крипто-Про. Сертификаты Головного удостоверяющего центра можно скачать по ссылкам
http://api.mdlp.crpt.ru/static/minkomsvyaz.cer
http://api.mdlp.crpt.ru/static/cryptopro.cer
3) Настройки для Тестового стенда API
 добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки
http://testca.cryptopro.ru/certsrv/certcarc.asp
 в файл hosts должна быть добавлена запись
185.196.171.27 api.stage.mdlp.crpt.ru
4) Точки доступа для тестового стенда Песочница:
32
http://api.sb.mdlp.crpt.ru https://api.sb.mdlp.crpt.ru
 добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки
http://testca.cryptopro.ru/certsrv/certcarc.asp

это из файла "API протокол обмена интерфейсного уровня" с сайта ЧЗ.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886408
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,
И что вообще там в файле 'C:\doc.txt'? :) Может для начала попробовать что-то вроде documents/income? В send можно подать ему такой фильтр: '{"filter":{},"start_from":0,"count":100}'
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886423
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

Ужас какой... А стандартные функции не подойдут? К тому же где вы устанавливаете HTTPS?

Примерно так:

WinHttpOpen
WinHttpConnect + INTERNET_DEFAULT_HTTPS_PORT
WinHttpOpenRequest + WINHTTP_FLAG_SECURE
WinHttpSetOption + нужные флаги
и т.д.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886432
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или импортируйте tlb и получите WinHttp_TLB
с норм методами, свойствами и вызовами...

Microsoft WinHTTP Services, version 5.1, C:\Windows\system32\winhttp.dll, {662901FC-6951-4854-9EB2-D9A2570F2B2E}
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886436
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,
Что это за стандартные функции такие? WinHttpOpen? Или у меня Delphi XE устарел?
Что OLE, что через TLB - без разницы, работать должно.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886490
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov,

Winapi.WinHTTP

Если нету, то самому описать функции отсюда https://docs.microsoft.com/en-us/windows/win32/api/winhttp/
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886494
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,
А, понял, спасибо. В XE этого нет.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886584
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012
если внутри dll будет вызов СКЗИ с ГОСТ - да
речь о допиленных длл опен ссл ? а со стандартными никак ?
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886641
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer
sql2012
если внутри dll будет вызов СКЗИ с ГОСТ - да
речь о допиленных длл опен ссл ? а со стандартными никак ?


а стандартные это какие?
в которых нет реализации ГОСТ-а?



OpenSSL + ГОСТ (gostengy и gost_capi) - Использование КриптоПро CSP в OpenSSL: apache, nginx etc
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886660
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь, пока в прострации, https упорно не работает. Попробовал TScHttpWebRequest от Devart - также с http работает , с https - нет, вылазит the other side has sent a failure alert [40] (см. скрин), как я понимаю обрубается все еще на уровне handshake. Видимо потому что ГОСТа нет в списке его алгоритмов (см. скрин)?
остальными настройками игрался - ставлил все что можно из свойств ignore в true - не помогает. Еще вопрос - вот я все протоколы сделал true (см. скрин) - так можно или надо какой-то один выбрать?
Код:

Код: 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.
var
  Request: TScHttpWebRequest;
  Response: TScHttpWebResponse;
  ResponseStr: string;
  Buf: TBytes;
  AURL: string;
  APOSTData: WideString;
begin
  AURL := 'https://api.stage.mdlp.crpt.ru/api/v1/documents/income';
  try
    Request := TScHttpWebRequest.Create(AURL);
    Response := TScHttpWebResponse.Create;
    APOSTData :='{"filter":{},"start_from":0,"count":100'+'}';
    Buf :=  StringToBytes(APOSTData);
    Request.ContentType := 'application/json';
    Request.Headers.Add('Authorization', 'token 5ca8e99b-c11a-406d-adec-90813dcea5d2');
    Request.ContentLength := Length(Buf);
    Request.WriteBuffer(Buf);
    Response := Request.GetResponse;
  finally
    showMessage(Response.ReadAsString);
    Request.Free;
    Response.Free;
end;



Что касается WinHTTP и настроек для ЧЗ
3) Настройки для Тестового стенда API
 добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки
http://testca.cryptopro.ru/certsrv/certcarc.asp
 в файл hosts должна быть добавлена запись
185.196.171.27 api.stage.mdlp.crpt.ru


Настройки все были сделаны изначально как в инструкции. Если URL в WinHTTP меняешь с https на http
к примеру http://api.stage.mdlp.crpt.ru/api/v1/documents/income - работает (хотя и выдает ошибку, н озапрос обрабатывается)
иначе ошибка как вчера. Тут все же как я понимаю ошибка в настройках самого компонента, так как от сервера от ничего не успевает просто получить. То что советовали WinHttp_TLB и прочее - пока не пробовал
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886665
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще хотел попробовать chromium, чтобы затестить, работает ли вообще https в тестовом контуре, но вот такая ошибка вылазит.
Что делаю не так? Или он только для 64-разрядной винды предназначен? Ссылок на виндовую версию всего 2, по разрядности не подразделяются
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886670
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

1. КриптоПРО CSP - какая сборка?
2. В IE ГОСТ-TLS работает?
3. Что касается WinHTTP = ранее давал для самопроверки URL - https://cpca.cryptopro.ru - его IE открывает? Также и WinHTTP может запросить для проверки ГОСТ-а. У меня работает (через COM, как у тебя).
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886678
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012, см. скрин
TLS в IE вроде подключен, а как узнать насчет ГОСТа, я в этом вообще не шарю, если честно.
При открытии https://cpca.cryptopro.ru в IE сначала ошибка сертификата, но если игнорить ее, то открывается
Версия Crypro Pro CSP получается 5.0.11455
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886762
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,
Значит работает.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886771
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012, а как chromium то поставить, не подскажете? Я вижу только эти ссылки для скачивания дистриба (скрин), с обоими виндовыми у меня вылазит ошибка как в предыдущих постах. Он только на 64 битке работает? Или что мне надо сделать чтобы он установился?
Самому компилить код что ли?
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886806
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

installer или zip,
zip использую.

У меня 64х.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886820
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,

заходи и качай Win32 на выбор
https://update.cryptopro.ru/chromium-gost/archives/
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886825
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010,
Попробуйте зарегистрироваться в песочнице. В этом случае сможете сравнить мои результаты со своими. В тестовом модуле не вижу никакого смысла возиться. Всё, что надо, отлаживается в песочнице плюс не надо создавать себе контрагентов, они там все присутствуют. Отличается от рабочего модуля только тем, что это тестовый сервер. К тому, не будет ограничения по IP, можно из дома работать, если есть УКЭП и Крипто-про. Я работаю под УКЭП реальной аптеки, но вот с одним разработчиком обмениваемся данными через песочницу, так у него вижу УКЭП тестовый, значит можно и его зарегистрировать. Надо просто оформить заявку в ЧЗ.

Зарегистрируйтесь на форуме ЧЗ, там Вам, скорее всего, быстро ответят, работает ли кто-нибудь с тестовым стендом API, или все в песочнице сидят, и какие там будут подводные камни.
...
Рейтинг: 0 / 0
Delphi Rest Client + SSL
    #39886847
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X-Cite, sql2012, V.Borzov
Огромное спасибо за помощь. Вроде бы https взлетел с IWinHttpRequest.
По крайней мере стал приходит ответ от сервака (скрин). Но опять таки неясно почему так? Все права вроде бы есть, по крайней мере
ЧЗ авторизовал на тестовом стенде и все права я себе назначил как в инструкции.
V.Borzov сталкивались с таким? Как побороть?
И еще вопрос по песочнице - как проверить, может нам уже дали доступ, просто попробовать авторизоваться?
Весь алгоритм такой же как с тестовым стендом, другой IP не надо в hosts прописывать как я понимаю?
Возможно мы уже авторизованы в песочнице, потому что когда запрашивал доступ к тестовому стенду, техподдержка ЧЗ сначала ответила что дали доступ к песочнице
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Rest Client + SSL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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