我正在尝试从响应头中提取ETag。它确实存在于响应中。我可以使用firebug看到它,我可以使用检查器在响应对象中看到它:
Status: 200 OK
X-Api-Version: 1.3.2
Access-Control-Allow-Origin: *
X-Runtime: 0.151298
Connection: keep-alive
Content-Length: 8185
Cache-Control: public, max-age=11216
Content-Type: application/json; charset=utf-8
Date: Fri, 09 Mar 2012 01:40:05 GMT
Expires: Fri, 09 Mar 2012 04:47:01 GMT
ETag: "bd3fe1123a8f55e01ca859f4804e8fbe"
Last-Modified: Fri, 09 Mar 2012 00:47:01 GMT
Server: nginx/1.0.11
所有其他代码工作正常,使得HttpWebRequest,获得respose等。唯一的问题是我在尝试获取ETag时(总是在响应头中存在)时始终为null。
以下是简化代码:
var request = (HttpWebRequest)WebRequest.Create(validUri);
SetHeaders(); // helper function to set basic headers.
var response = request.GetResponse();
var stream = response.GetResponseStream();
var reader = new StreamReader(stream);
var result = reader.ReadToEnd();
var etag = response.Headers.Get("ETag");
任何人都知道为什么我似乎无法提取现有的ETag?
答案 0 :(得分:2)
您的代码无法重现您所描述的问题。你的问题出在你未提及的问题上。这是一个基于您的代码的简短的完整的程序,它执行并打印出ETag的值而没有问题:
using System;
using System.IO;
using System.Net;
namespace SO9628006
{
class Program
{
static void Main()
{
var request = (HttpWebRequest)WebRequest.Create("http://www.fiddler2.com/Fiddler/Fiddler.css");
var response = request.GetResponse();
var stream = response.GetResponseStream();
var reader = new StreamReader(stream);
var result = reader.ReadToEnd();
var etag = response.Headers.Get("ETag");
Console.WriteLine(etag);
}
}
}
输出:
"6c3673ba919ec71:243"
请您提供说明您问题的short but complete program吗?