gpt4 book ai didi

c# - 如何检查 System.Net.WebClient.DownloadData 是否正在下载二进制文件?

转载 作者:IT王子 更新时间:2023-10-29 04:28:44 26 4
gpt4 key购买 nike

我正在尝试使用 WebClient 使用 WinForms 应用程序从 Web 下载文件。但是,我真的只想下载 HTML 文件。我想忽略的任何其他类型。

我检查了 WebResponse.ContentType,但它的值始终为 null

谁知道可能是什么原因?

最佳答案

鉴于您的更新,您可以通过更改 GetWebRequest 中的 .Method 来完成此操作:

using System;
using System.Net;
static class Program
{
static void Main()
{
using (MyClient client = new MyClient())
{
client.HeadOnly = true;
string uri = "http://www.google.com";
byte[] body = client.DownloadData(uri); // note should be 0-length
string type = client.ResponseHeaders["content-type"];
client.HeadOnly = false;
// check 'tis not binary... we'll use text/, but could
// check for text/html
if (type.StartsWith(@"text/"))
{
string text = client.DownloadString(uri);
Console.WriteLine(text);
}
}
}

}

class MyClient : WebClient
{
public bool HeadOnly { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest req = base.GetWebRequest(address);
if (HeadOnly && req.Method == "GET")
{
req.Method = "HEAD";
}
return req;
}
}

或者,您可以在覆盖 GetWebRespons() 时检查 header ,如果它不是您想要的,则可能会抛出异常:

protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse resp = base.GetWebResponse(request);
string type = resp.Headers["content-type"];
// do something with type
return resp;
}

关于c# - 如何检查 System.Net.WebClient.DownloadData 是否正在下载二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/153451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com