我有一个桌面客户端,它通过 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(它是""
)我什至不知道在哪里看,因为一切看起来它应该工作。
可能是什么问题?