首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebResponse.GetResponseStream()可以返回null吗?

WebResponse.GetResponseStream()可以返回null吗?
EN

Stack Overflow用户
提问于 2013-06-04 14:20:46
回答 2查看 4.4K关注 0票数 17

我知道这是一个新手问题,但我只是想知道GetResponseStream()是否在任何情况下都可以返回null?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-04 14:22:55

嗯,这在某种程度上取决于具体的子类-但我从来没有见过这样做的子类,它也没有记录为有效的返回值。我从来没有见过任何编写的代码来防御性地检查这一点,我也不期望这样做。这并不是说这样的代码不存在,但我不认为它是必要的。

如果响应中没有内容(但响应是成功的),我希望任何好的实现都会返回一个空流。

票数 15
EN

Stack Overflow用户

发布于 2016-10-05 21:07:19

特别是从WebResponse**WebResponse**,派生的内置类型中,没有HttpWebResponse**,可以返回。**这种迷信的想法已经误导了许多开发人员。不要检查是否为空。这样的代码是死代码。

与返回空流相比,null意味着什么呢?!这是不合理的。

另外,GetResponse() 不能返回null。再次返回,这是什么意思?!HTTP协议不支持“空响应”的概念。如果这种情况是由于库错误而发生的,那么无论如何都不可能处理这种情况。任何这样的检查都无济于事。

可以创建从返回疯狂的值(如null )的WebResponse派生的类。没有内置的类可以做到这一点,它应该被认为是返回null的错误。从WebResponse派生的类非常少见。我从来没见过。

这里有一个很好的代码模式可以使用:

代码语言:javascript
复制
var request = WebRequest.Create("http://example.org/");

using (var response = request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var responseReader = new StreamReader(responseStream))
{
    var contents = responseReader.ReadToEnd();
}

它演示了如何使用HttpWebRequest简洁而安全地读取HTTP URL的内容。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16911056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档