我在django rest框架中给了我一个休息服务。我试图在C#中使用这项服务。
以下是我的示例代码:
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();
最后一行导致Web异常。当我尝试获取状态代码时,我得到403 Forbidden。编写服务的用户表示当密码不正确时返回-5。当用户帐户不存在时返回-6。如何处理这些错误值,因为对于我来说,对于每个场景,它总是返回403.在Web异常中哪里可以看到-5和-6?
答案 0 :(得分:2)
在调用WebException时,未成功的HTTP响应(因此2xx以外的状态代码)将抛出HttpWebRequest.GetResponse
。为了仍然访问响应,您可以捕获异常,然后访问其Response
属性以仍然可以访问从服务器收到的WebResponse
对象:
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;
}