2013-08-21 12 views
25

Ich bin api und nannte sie über .NETeinen Rest api mit Benutzername und Passwort aufrufen - wie man

Ich habe eine api zur Ruhe: https://sub.domain.com/api/operations?param=value&param2=value

Die Noten für die api sagen, dass zu genehmigen I muss die grundlegende Zugangsauthentifizierung verwenden - wie mache ich das?

Im Moment habe ich diesen Code:

 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; 

Allerdings bekomme ich ein 401 nicht autorisierten Fehler.

Was vermisse ich, wie kann ich mit der Basiszugriffsberechtigung API-Aufrufe bilden?

+0

Der Authentifizierungstyp hängt von der API ab. Was ist die API, die Sie aufrufen möchten? 401 unautorisiert bedeutet, dass Sie eindeutig ungültige Anmeldedaten übergeben haben und nicht genügend Kontext für die Diagnose bereitstellen. Verwendet die API OAuth? –

Antwort

40

Wenn die API angibt, die HTTP-Standardauthentifizierung zu verwenden, müssen Sie Ihrer Anforderung einen Autorisierungsheader hinzufügen. Ich würde Ihren Code wie folgt aussehen ändern:

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; 

Ersetzen "username" und "password" mit den richtigen Werten, natürlich.

+0

aber wie liest man den Wert von 'resp'? –

+0

@SHEKHARSHETE Sie können sich [HttpWebResponse.GetResponseStream()] (http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getrestresestream.aspx) ansehen. Beachten Sie den Hinweis zum Schließen des Streams, wenn Sie damit fertig sind. Das ist ziemlich wichtig. – Adrian

+0

stellen Sie sicher, dass Sie req.Credentials .. Zeile mit Ihrem Benutzernamen und Passwort dort auskommentieren. andernfalls bleibt es unbefugt. – Gurusinghe

Verwandte Themen