Подтвердить что ты не робот

Вызов rest api с именем пользователя и паролем - как

Я новичок в отдыхе api и вызываю их через .NET.

У меня есть api: https://sub.domain.com/api/operations?param=value&param2=value

Заметки для api говорят, что для авторизации мне нужно использовать базовую аутентификацию доступа - как это сделать?

В настоящее время у меня есть этот код:

        WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value");
        req.Method = "GET";
        //req.Credentials = new NetworkCredential("username", "password");
        HttpWebResponse resp = req.GetResponse() as HttpWebResponse;

Однако я получаю несанкционированную ошибку 401.

Что мне не хватает, как мне формировать вызовы api с помощью основного доступа?

4b9b3361

Ответ 1

Если API говорит об использовании обычной проверки подлинности HTTP, вам необходимо добавить заголовок авторизации к вашему запросу. Я бы изменил ваш код так:

    WebRequest req = WebRequest.Create(@"https://sub.domain.com/api/operations?param=value&param2=value");
    req.Method = "GET";
    req.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("username:password"));
    //req.Credentials = new NetworkCredential("username", "password");
    HttpWebResponse resp = req.GetResponse() as HttpWebResponse;

Замена "username" и "password" с правильными значениями, конечно.

Ответ 2

Вы также можете использовать библиотеку RestSharp, например

var userName = "myuser";
var password = "mypassword";
var host = "170.170.170.170:333";
var client = new RestClient("https://" + host + "/method1");            
client.Authenticator = new HttpBasicAuthenticator(userName, password);            
var request = new RestRequest(Method.POST); 
request.AddHeader("Accept", "application/json");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json");            
request.AddParameter("application/json","{}",ParameterType.RequestBody);
IRestResponse response = client.Execute(request);