Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 13.01.2020, 11: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 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
послать запрос 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 08:21
как послать http-запрос? Johnson Работа с сетью в Delphi 2 06.11.2009 14:28