我正在做这样的事情:
var httpWebRequest = WebRequest.Create(context.Url) as HttpWebRequest;
httpWebRequest.Method = "POST"
... (set all the stuff)
... (get request stream and post data)
//Get response
var httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
... (Inspect Headers)
//Get response stream and read body
var responseStream = httpWebRequest.GetResponseStream();出于我的小小期望,我认为调用GetResponse()只会获取头部,当我开始从响应流中读取内容时,实际上会下载正文。实际发生的情况是,当我调用GetResponseStream()并读取它时,数据已经可用。响应是普通的HTML页面。我相信对于分块的数据,它工作得很好。
所以我的问题是,那里到底发生了什么,如何在获取正文内容之前只从http post中获取标题?
发布于 2012-04-12 17:28:40
对于GET或POST请求,服务器将发送所有响应数据,而不会在传输中分离报头和“正文”。要仅获取头部,请将httpWebRequest.Method设置为"HEAD“,并使用httpWebResponse.Headers ( http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.headers.aspx )来收集头部数据。
发布于 2015-03-28 04:16:05
添加一些代码:
url = "some web string"
uri = new UriBuilder(url).Uri;
request = WebRequest.Create(this.uri);
request.Method = "HEAD";
response = request.GetResponse();
response.Close();现在我们只得到了头文件。干净利落!访问方式如下:
for (int i = 0; i < response.Headers.Count; ++i) {
Console.WriteLine("\n Header Name:{0}, Value :{1}", response.Headers.Keys[i], response.Headers[i]);
}不幸的是,似乎没有一种方法可以直接查找特定的头名称。所以你必须使用一些包装器函数来检查所有的键。
编辑: Execpt,显然是内容类型。您可以使用response.ContentType来实现这一点。
https://stackoverflow.com/questions/10120713
复制相似问题