2013-08-21 17 views
25

Sono nuovo di riposare API e chiamandoli tramite .NETChiamare un API REST con username e password - come

Ho un api: https://sub.domain.com/api/operations?param=value&param2=value

Le note per l'API dire che di autorizzare I è necessario utilizzare l'autenticazione di accesso di base: come faccio?

Al momento ho questo codice:

 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; 

Tuttavia ottengo un errore di non autorizzati 401.

Cosa mi manca, come si formano le chiamate API utilizzando l'autenticazione di accesso di base?

+0

Il tipo di autenticazione dipende dall'API. Qual è l'API che stai cercando di chiamare? 401 non autorizzato significa che stai passando chiaramente le credenziali non valide e non fornisce un contesto sufficiente per la diagnosi. L'API utilizza OAuth? –

risposta

40

Se l'API dice di utilizzare l'autenticazione di base HTTP, è necessario aggiungere un'intestazione Autorizzazione alla richiesta. Mi piacerebbe modificare il vostro codice per assomigliare a questo:

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; 

Sostituzione "username" e "password" con i valori corretti, ovviamente.

+0

ma come leggere il valore di 'resp'? –

+0

@SHEKHARSHETE Potrebbe essere utile dare un'occhiata a [HttpWebResponse.GetResponseStream()] (http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream.aspx). Prendi nota speciale della nota Note alla chiusura dello Streaming una volta che hai finito con esso. Questo è abbastanza importante. – Adrian

+0

assicurati di rimuovere il commento da req.Credentials .. linea con il tuo nome utente e la password lì. altrimenti rimarrà non autorizzato. – Gurusinghe

Problemi correlati