小编mai*_*ray的帖子

无法从 WebException 获取 ResponseStream

我有一个桌面客户端,它通过 Http 与服务器端通信。当服务器在数据处理方面出现一些问题时,它会在 Http 响应正文中返回 JSON 中的错误描述,并带有正确的 Http 代码(主要是 HTTP-400)。

当我读到 HTTP-200 响应时,一切都很好,并且此代码有效:

 using (var response = await httpRequest.GetResponseAsync(token))
                {
                    using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
                    {
                        return await reader.ReadToEndAsync();
                    }
                }
Run Code Online (Sandbox Code Playgroud)

但是当发生错误并且 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();
                            }
                        }
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

我已经对它做了一些处理,也许可以让它工作,但接下来发生了: response.ContentLength有效(184)但stream.Length为0,之后我无法读取json(它是 …

.net c# httpwebresponse system.net.webexception

2
推荐指数
1
解决办法
3088
查看次数