2013-08-21 3 views
25

Я новичок отдыхать API, и называя их с помощью .NETВызов REST API с именем пользователя и паролем - как

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

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

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

 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 с использованием основного доступа auth?

+0

Тип аутентификации зависит от API. Каким API вы пытаетесь позвонить? 401 несанкционированный означает, что вы явно передавали недопустимые учетные данные и не обеспечивали достаточного контекста для диагностики. Является ли API использованием OAuth? –

ответ

40

Если 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" с правильными значениями, конечно.

+0

но как читать значение 'resp'? –

+0

@SHEKHARSHETE Возможно, вы захотите посмотреть [HttpWebResponse.GetResponseStream()] (http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream.aspx). Обратите внимание на примечание к заметке о закрытии потока, как только вы закончите с ним. Это очень важно. – Adrian

+0

убедитесь, что вы раскомментируете req.Credentials .. строку с вашим именем пользователя и паролем. в противном случае он останется неавторизованным. – Gurusinghe

Смежные вопросы