Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2020, 10:55   #1
Gregor
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 208
По умолчанию Послать Post запрос сервису используя сертификат

Я делаю автоматическую загрузку файлов с сервиса. Часть файлов можно скачать используя публичное API, часть используя приватное API. Приватное API хочет от меня использование сертификатов.На сайте разработчика сайта есть софт который делает те же манипуляции, но автоматического скачивания нет. И этот софт требует в настройках указать слепок сертификата(34.10-2012) который идет вместе с ним. Так же он требует для приватных функций указать персональный сертификат который у меня есть.

В своей программе я получаю персональный сертификат и отправляю запрос, но сервис выдает ошибку. Я так понимаю надо еще как то указать слепок корневого сертификата как это требует их софт. Т.е клиент должен при отправке использовать 2 сертификата. Не могу разобраться. Ранее не использовал сертификаты. Поэтому испытываю затруднения
Код:

        public async Task CallWebService()
    {
        var _url = "http://xxxxxx.ru:7081/PersonalApi/PersonalApiService.svc/ByCertificate";
        var _action =  "http://xxxxx.ru/soft/dssi/XXXX/XXX/Web/Api/PersonalApi/IPersonalApiService/TestAuthentication";

        XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
        HttpWebRequest webRequest = CreateWebRequest(_url, _action);

        var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
        store.Open(OpenFlags.ReadOnly);
        X509CertificateCollection certs = store.Certificates.Find(X509FindType.FindBySerialNumber, "2C1EC4D41005000071B0", false);
        webRequest.ClientCertificates = certs;
        InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
        try
        {
            var response = await webRequest.GetResponseAsync();
            string soapResult;
            using (StreamReader rd = new StreamReader(response.GetResponseStream()))
            {
                soapResult = rd.ReadToEnd();
            }
            Console.Write(soapResult);
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
интенсивно гуглю прежде чем задать вопрос
Gregor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
послать запрос php скрипту spydark91 Общие вопросы Delphi 8 01.10.2011 17:26
Послать запрос с изменённым cookies на сервер Человек_Борща Работа с сетью в Delphi 9 03.06.2011 12:16
Послать Alt+Mouse1 используя SendMessage. TwiX Общие вопросы Delphi 0 07.06.2010 01:54
Как послать запрос HTTP 1.1 Izhic Работа с сетью в Delphi 0 07.12.2009 07:21
как послать http-запрос? Johnson Работа с сетью в Delphi 2 06.11.2009 13:28