C# 如何在指定的数据量之后中断WebRequest(GET)?

C# 如何在指定的数据量之后中断WebRequest(GET)?,c#,.net,webrequest,C#,.net,Webrequest,我发现HTTP HEAD方法在实践中并不总是可靠的: 可以用HTTP GET方法模拟HTTP HEAD方法吗?我的意思是,我只需要答案的标题,这样就足以限制最大数据量。我可以在.NET中这样做吗 谢谢 可以用HTTP GET方法模拟HTTP HEAD方法吗 不,当然不是。GET请求总是带有一个主体作为响应。HTTP规范就是这么说的。因此,除非您找到一个违反HTTP规范的web服务器,否则我认为它不会工作。只有HEAD动词是为了达到你想要的目的而设计的 可以用HTTP GET方法模拟HTTP HE

我发现HTTP HEAD方法在实践中并不总是可靠的:

可以用HTTP GET方法模拟HTTP HEAD方法吗?我的意思是,我只需要答案的标题,这样就足以限制最大数据量。我可以在.NET中这样做吗

谢谢

可以用HTTP GET方法模拟HTTP HEAD方法吗

不,当然不是。GET请求总是带有一个主体作为响应。HTTP规范就是这么说的。因此,除非您找到一个违反HTTP规范的web服务器,否则我认为它不会工作。只有HEAD动词是为了达到你想要的目的而设计的

可以用HTTP GET方法模拟HTTP HEAD方法吗


不,当然不是。GET请求总是带有一个主体作为响应。HTTP规范就是这么说的。因此,除非您找到一个违反HTTP规范的web服务器,否则我认为它不会工作。只有HEAD动词是为实现您想要的功能而设计的。

使用返回流的
WebClient.OpenRead()
。读取所需的字节数,然后关闭流。

使用返回流的
WebClient.OpenRead()
。读取所需的字节数,然后关闭流。

是,但响应是通过TCP/IP下载的。如果我有足够的数据,我应该能够中断连接,对吗?不,因为web服务器已经将响应写入网络套接字,当然,除非服务器使用分块传输编码,但即使在这种情况下,它也会写入一些分块。当然,您可以中断读取(如果您使用TcpListener并降低TCP/IP级别),但您已经浪费了带宽,我认为这是您最初想要避免的。我想节省带宽,但另一方面,它不必100%高效。这是一个衡量的问题。谢谢你的回答和评论最后一条注释可能是我正在寻找的(如果内容类型不是我要找的,简单地发出GET请求并终止连接),是的,但是响应是通过TCP/IP下载的。如果我有足够的数据,我应该能够中断连接,对吗?不,因为web服务器已经将响应写入网络套接字,当然,除非服务器使用分块传输编码,但即使在这种情况下,它也会写入一些分块。当然,您可以中断读取(如果您使用TcpListener并降低TCP/IP级别),但您已经浪费了带宽,我认为这是您最初想要避免的。我想节省带宽,但另一方面,它不必100%高效。这是一个衡量的问题。谢谢你的回答和评论最后一条评论可能就是我要找的(如果内容类型不是我要找的,只需发出GET请求并终止连接)。您只从流中读取了所需数量的字节这一事实并不意味着服务器尚未将所有响应体写入网络套接字,浪费所有的带宽,这是OP首先想要避免的。事实上,您只从流中读取了所需数量的字节,这并不意味着服务器尚未将所有响应体写入网络套接字,浪费了OP首先想要避免的所有带宽。