【发布时间】:2013-04-13 09:07:39
【问题描述】:
有没有办法确定来自 C# 中 HttpWebRequest 的响应是否包含二进制数据和文本?还是我应该使用其他类或函数来执行此操作?
这里有一些示例代码。如果内容不是文本,我想在阅读 StreamReader 之前知道。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.someurl.com");
request.Method = WebRequestMethods.Http.Get;
using (WebResponse response = request.GetResponse())
{
// check somewhere in here if the response is binary data and ignore it
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseDetails = reader.ReadToEnd().Trim();
}
}
【问题讨论】:
-
是否会在您的回复中检查
ContentType,看看它是否是您对处理工作数据感兴趣的类型之一? -
我正在考虑这样做,但不确定这有多安全。就像 Web 服务器可以在 http 标头中返回内容类型的文本并仍然返回二进制数据一样。
-
这完全有可能,但我希望这是一个非常罕见的情况
-
如果您不想依赖
ContentType标签,根据我的直觉,您无法在不实际阅读内容的情况下确定内容是什么,然后检查一些控制字符以假设为漂亮很有可能,您有一些二进制数据,因为在文本内容中获得许多不可打印字符的可能性很小。
标签: c# httpwebrequest httpwebresponse getresponsestream