Портирование веб-сервиса мыла Delphi 2010 с использованием wininet на winhttp
В настоящее время мы используем веб-сервис на основе мыла в приложении delphi, работающем на XP (да еще на XP) и портируем на ОС Windows 8.1. Наша текущая реализация также использует CAPICOM для управления сертификатами, который теперь также не поддерживается.
Мы планируем перейти с wininet на winhttp (быстрее), оставаясь с текущей версией Delphi 2010. Я нашел следующие компоненты: SynCrtSock, ICS и Indy. Из моего обзора они либо используют wininet, либо не поддерживают мыло?
Будем весьма благодарны за любую информацию о компонентах и примерах с минимумом: поддержка мыла, winhttp и управление сертификатами.
Заранее спасибо.
1 ответ
Теперь я решил ключевой вопрос в управлении сертификатами и решил опубликовать свое решение.
Требования к управлению сертификатами были ограничены только присоединением к сообщению SOAP, и я смог достичь решения с помощью библиотеки wcrypt2. Мой оригинальный код с использованием CAPICOM (с помощью многих поисковых запросов в Интернете) был
Certificate1.Load(CertFile, certpword, CAPICOM_KEY_STORAGE_DEFAULT,
CAPICOM_CURRENT_USER_KEY);
Cert2 := Certificate1.DefaultInterface;
CertContext := Cert2 as ICertContext;
CertContext.Get_CertContext(Integer(PCertContext));
if internetsetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT,
PCertContext, SizeOf(CERT_CONTEXT)) = False then
begin
'Error Handling'
end;
Используя wcrypt2, я смог прочитать из хранилища сертификатов и прикрепить к сообщению мыла, просто изменив мою функцию BeforePost с помощью
hMyStore:=CertOpenSystemStore(0,'MY');
pCertContext:=CertFindCertificateInStore(
hMyStore,
X509_ASN_ENCODING,
0,
CERT_FIND_SUBJECT_STR,
PCHAR('KeyName'),Nil
);
if internetsetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT,
PCertContext, SizeOf(CERT_CONTEXT)) = False then
begin
'error handling'
end;
И теперь я совместим с Windows 8.1, так как wininet все еще совместим с 8.1, это не на моем критическом пути и у меня есть дополнительное время для развертывания решения.
Любые дальнейшие советы по моему решению будут с благодарностью.