Suman Zalodiya Ответов: 2

Потреблять HTTPS для API-интерфейса REST, разработанные в C#


Всем Привет,

Мы уже интегрировали наше приложение с одной третьей стороной. Мы потребляем их Rest API, разработанный на Java из приложения C#.

Они отключили все протоколы на сервере, отличные от TSL1.2(т. е. SSL2, TSL1.0, TSL1.1)

Когда мы вызываем Rest API, мы получаем ошибку. Пожалуйста, найдите ниже мой код

Что я уже пробовал:

string response;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls|SecurityProtocolType.Ssl3;
        ServicePointManager.ServerCertificateValidationCallback = delegate(object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };
        WebClient client = new WebClient();
        string credentials;
      
        credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes("gujarat_ws_client" + ":" + "guj@r@t_C|ient"));
        client.Headers.Add("Authorization", "Basic Z3VqYXJhdF93c19jbGllbnQ6Z3VqQHJAdF9DfGllbnQ=");                                             
        try
        {
            
            var strEaushadhiURI = "https://xxx.com/";

            System.Net.ServicePointManager.ServerCertificateValidationCallback = (object se, System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslerror) => true;
            response = client.DownloadString(new Uri(strEaushadhiURI + "/AMH/" + txtVoucherNumber.Text.Trim()));
            System.Net.ServicePointManager.ServerCertificateValidationCallback = null;
            TextBox1.Text = response;
        }
        catch (Exception ex)
        {
            TextBox1.Text = ex.Message;
        }


Но я получаю ошибку :
The remote server returned an error: (401) Unauthorized.

2 Ответов

Рейтинг:
0

Gerry Schmitz

"Сертификат" предназначен для обеспечения того, чтобы сервер был "действительным / безопасным"; он не имеет ничего общего с вашим "полномочием" получить доступ к указанному серверу.

Вы просто не "входите в систему" должным образом; подразумевается, что для доступа требуется "учетная запись и пароль" или маркер безопасности.


Рейтинг:
0

Nima Shayesteh

У меня была та же проблема, и это было из-за моих заголовков запросов.
Я поставлю образец кода для вас :

httpWReq.UserAgent = "Apache-HttpClient/4.2.1";
httpWReq.Принимаем = "текст/HTML, изображения/GIF, изображение/jpeg *; г=.2, */*; г=.2";
httpWReq.ContentType = "text/plain";
httpWReq.Заголовки.Добавить("Авторизация", "Базовый" + Преобразование.ToBase64String(authBytes));
httpWReq.Headers.Add("Подпись", CanonicalReq);
httpWReq.Headers.Add("SignedHeaders", "host");
/* httpWReq.Заголовки.Добавить("содержимое-тип", "текст/равнина")*/
//агент пользователя
httpWReq.ProtocolVersion = HttpVersion.Version11;
httpWReq.метод get";


Всего наилучшего.