【发布时间】:2014-03-05 19:53:55
【问题描述】:
长话短说,我正在向应用服务器发送一个 XML HTTP 发布请求,并且我收到了一个响应,也是 XML HTTP 的形式。
我有一个可用的测试站点,它允许我以 XML 的形式直观地查看服务器的实际响应是什么,但是我无法从我的 C# 代码中访问这个 XML。
在我的测试用例中,从应用服务器返回的 XML 如下所示:
<Error><Message>StringErrorMessage</Message></Error>
但是,我没有运气访问此基本 XML 来检索“StringErrorMessage”的值以创建详细的错误报告。
... More code above, all wrapped in a try{}...
_response = Serializer.DeserializeObject<T>(ObjectRequest.GetResponse().GetResponseStream());
}
catch (System.Net.WebException exceptionParameter)
{
var response = (HttpWebResponse)exceptionParameter.Response;
string webExceptionStatus = exceptionParameter.Message;
_exception = exceptionParameter;
return false;
}
我咨询过 C# - Getting the response body from a 403 error
和
Get response body on 400 HTTP response in Android?
第一个链接的解决方案似乎没有让我访问作为任何响应对象属性的一部分的基本 XML。我几乎肯定在某处(在响应中或在异常对象中)必须有一个 byte[] 可以转换为 char[],它可以转换为字符串,可以转换为我的XML 正文,但我一直无法找到它。第二个链接的解决方案对我来说并不完全可行,因为我必须以 XML 的形式取回响应主体,因为它可能不是错误,而是必须反序列化的对象。事情的这一面,我无法改变。
非常感谢任何建议。 - 伊莱
编辑:只是想澄清我的基本代码在非错误情况下工作正常,并且反序列化 XML 就好了。当我的代码遇到 HTTP 400 或 HTTP 500 错误时,从 catch 语句访问 XML 就会成为问题,因为我的代码会立即抛出异常。
【问题讨论】: