2017-08-08 3 views
0

Ich habe einen Rest Service mir im Django Rest Framework gegeben. Ich versuche, diesen Service in C# zu konsumieren.Get tatsächlichen Fehlercode von Web-Service

Hier ist mein Beispielcode:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://abcd.zyz.com/hello/pqr"); 

request.Method = "POST"; 
request.ContentType = "application/json"; 

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 

string data = "{" + "\"key" + "\":" + "\"" + value + "\"}"; 


byte[] bytes = encoding.GetBytes(data); 

request.ContentLength = bytes.Length; 

string strUserNameAndPasswordForHeader = strUserName + ":" + strPassword; 

request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(strUserNameAndPasswordForHeader)); /*Add username password to header*/ 

using (Stream requestStream = request.GetRequestStream()) 
{ 
    // Send the data. 
    requestStream.Write(bytes, 0, bytes.Length); 
} 

var response = request.GetResponse(); 

Die letzte Zeile bewirkt, dass eine Web-Ausnahme. Wenn ich versuche, den Statuscode zu bekommen, bekomme ich 403 Verboten. Der Benutzer, der den Dienst geschrieben hat, gab an, dass er -5 zurückgibt, wenn das Kennwort falsch ist. Gibt -6 zurück, wenn das Benutzerkonto nicht existiert. Wie kann ich mit diesen Fehlerwerten umgehen, weil für mich für jedes dieser Szenarien immer 403 zurückgegeben wird. Wo kann ich -5 und -6 in Webausnahme sehen?

Antwort

1

Nicht erfolgreiche HTTP-Antworten (also ein anderer Statuscode als 2xx) werden beim Aufruf HttpWebRequest.GetResponse einen WebException auslösen. Um die Antwort auf noch zugreifen, können Sie die Ausnahme abfangen und den Zugang dann seine Response Eigenschaft immer noch Zugriff auf das WebResponse Objekt zu erhalten, die vom Server empfangen wurde:

try 
{ 
    var response = request.GetResponse(); 
    // handle successful case 
} 
catch (WebException ex) 
{ 
    if (ex.Response != null) 
    { 
     var responseStream = ex.Response.GetResponseStream(); 
     // do something with the response 
    } 
    else 
     throw; 
} 
+0

Warum die downvote ...? – poke

Verwandte Themen