如何在使用c# WebClient并获得异常时显示可选字段
本文关键字:异常 显示 字段 WebClient | 更新日期: 2023-09-27 17:49:35
我使用WebClient做一个POST到服务器,像这样:
string URI = "http://mydomain.com/foo";
string myParameters =
"&token=1234" +
"&text=" + HttpUtility.UrlEncode(someVariable);
using (WebClient wc = new WebClient())
{
try
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string HtmlResult = wc.UploadString(URI, myParameters);
}
catch (WebException e)
{
return e.Message;
}
}
我有时可以得到异常抛出由于HTTP 403(禁止)。在这种情况下,我想知道确切的原因。深入到我调用的服务中,它将可选地返回一个errorDetail
字段,如下所示:
"code": 403,
"errorType": "not_authorized",
"errorDetail": "Can reply on a checkin at most once."
然而,当我在Visual Studio中步进代码时,我不知道如何获得errorDetail
字段。它似乎不是WebException
的一部分。
是否有办法得到它,这样我就可以显示如下内容:
return e.Message + " -- " + e.errorDetail
?
errorDetail
不是HTTP规范的一部分,因此WebClient
不知道它。出于同样的原因,您将在BCL中找不到它。
你可能想要的是响应体,所以你可以解析它(可能是JSON?
您可以从WebException.Response
获得响应对象。就像你平时读回复一样读。
请注意,如果没有响应(例如,由于网络错误),该属性可能为空。