2017-08-08 1 views
0

J'ai un service de repos qui m'a été donné dans le cadre de repos django. J'essaie de consommer ce service en C#.Récupère le code d'erreur renvoyé par le service web

Voici mon exemple de code:

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(); 

La dernière ligne provoque une exception web. Lorsque j'essaie d'obtenir le code d'état, je reçois 403 Interdit. L'utilisateur qui a écrit le service a déclaré qu'il renvoie -5 lorsque le mot de passe est incorrect. Renvoie -6 lorsque le compte d'utilisateur n'existe pas. Comment puis-je gérer ces valeurs d'erreur parce que pour moi, pour chacun de ces scénarios, il renvoie toujours 403. Où puis-je voir -5 et -6 dans l'exception web?

Répondre

1

Les réponses HTTP non réussies (donc un code d'état autre que 2xx) afficheront WebException lors de l'appel HttpWebRequest.GetResponse. Pour accéder encore la réponse, vous pouvez intercepter l'exception et accéder à ses Response propriété pour obtenir encore accès à l'objet WebResponse qui a été reçu à partir du serveur:

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

Pourquoi le downvote ...? – poke