【发布时间】:2015-02-04 09:06:58
【问题描述】:
我有一个桌面客户端,它通过 Http 与服务器端通信。 当服务器在数据处理方面出现一些问题时,它会在 Http 响应正文中使用正确的 Http 代码(主要是 HTTP-400)返回 JSON 中的错误描述。
当我阅读 HTTP-200 响应时,一切都很好,并且此代码有效:
using (var response = await httpRequest.GetResponseAsync(token))
{
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
{
return await reader.ReadToEndAsync();
}
}
但是当发生错误并抛出并捕获 WebException 时,会出现以下代码:
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
using (var response = (HttpWebResponse) ex.Response)
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, Encoding.GetEncoding("utf-8")))
{
var json = reader.ReadToEnd();
}
}
}
}
}
我已经对其进行了一些处理以使其工作,但接下来会发生:
response.ContentLength 有效 (184)
但stream.Length 是 0
之后我无法读取json(它是"")
我什至不知道该去哪里找,因为一切看起来都应该可行。
可能是什么问题?
【问题讨论】:
标签: c# .net httpwebresponse system.net.webexception