我知道这是一个新手问题,但我只是想知道GetResponseStream()是否在任何情况下都可以返回null?
发布于 2013-06-04 14:22:55
嗯,这在某种程度上取决于具体的子类-但我从来没有见过这样做的子类,它也没有记录为有效的返回值。我从来没有见过任何编写的代码来防御性地检查这一点,我也不期望这样做。这并不是说这样的代码不存在,但我不认为它是必要的。
如果响应中没有内容(但响应是成功的),我希望任何好的实现都会返回一个空流。
发布于 2016-10-05 21:07:19
特别是从WebResponse**,WebResponse**,派生的内置类型中,没有HttpWebResponse**,可以返回。**这种迷信的想法已经误导了许多开发人员。不要检查是否为空。这样的代码是死代码。
与返回空流相比,null意味着什么呢?!这是不合理的。
另外,GetResponse() 不能返回null。再次返回,这是什么意思?!HTTP协议不支持“空响应”的概念。如果这种情况是由于库错误而发生的,那么无论如何都不可能处理这种情况。任何这样的检查都无济于事。
可以创建从返回疯狂的值(如null )的WebResponse派生的类。没有内置的类可以做到这一点,它应该被认为是返回null的错误。从WebResponse派生的类非常少见。我从来没见过。
这里有一个很好的代码模式可以使用:
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的内容。
https://stackoverflow.com/questions/16911056
复制相似问题