2013-08-21 15 views
25

Jestem nowy na odpoczynek API i nazywając je poprzez .NETWywołanie API REST z nazwy użytkownika i hasła - jak

mam API: https://sub.domain.com/api/operations?param=value&param2=value

notach dla API powiedzieć, że do autoryzacji I trzeba użyć podstawowego uwierzytelniania dostępu - jak mam to zrobić?

Obecnie mam ten kod:

 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; 

Jednak dostaję błąd 401 nieautoryzowany.

Czego mi brakuje, w jaki sposób mogę tworzyć połączenia API za pomocą podstawowego uwierzytelnienia dostępu?

+0

Typ uwierzytelnienia zależy od interfejsu API. Czym jest API, z którym próbujesz się połączyć? 401 nieautoryzowane oznacza, że ​​wyraźnie przekazujesz nieprawidłowe dane i nie zapewniasz wystarczającego kontekstu do diagnozy. Czy API używa OAuth? –

Odpowiedz

40

Jeśli API mówi, że do korzystania z podstawowego uwierzytelniania HTTP, musisz dodać nagłówek autoryzacji do swojego żądania. Chciałbym zmienić swój kod, aby wyglądać tak:

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; 

Wymiana "username" i "password" z prawidłowymi wartościami, oczywiście.

+0

, ale jak odczytać wartość "resp"? –

+0

@SHEKHARSHETE Być może zechcesz rzucić okiem na [HttpWebResponse.GetResponseStream()] (http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream.aspx). Zwróć szczególną uwagę na uwagi Uwagi dotyczące zamykania Strumienia, gdy skończysz. Jest to dość ważne. – Adrian

+0

upewnij się, że odkomentujesz linię req.Credentials .. z podaną tutaj nazwą użytkownika i hasłem. w przeciwnym razie pozostanie nieautoryzowany. – Gurusinghe

Powiązane problemy