有几点需要澄清:
您的日期模式不正确。
HttpWebRequestrequest.Date
标头只能在 .NET Framework 4 中进行修改,根据文档,System.Net
命名空间将始终将此标头写为使用GMT (UTC) 格式的标准格式。所以,无论你做什么来格式化你想要的日期,都行不通!
在其他 .NET 框架版本中,您将无法修改 HttpWebRequestrequest.Date
标头,因为它将使用正确的 GMT (UTC) 格式的实际日期,除非您使用某种技巧来设置您自己的日期和格式(见下文)。
您的问题的解决方案(经过测试和工作):
您的进口:
using System.Net;
using System.Reflection;
获取今天的日期格式:Mon, 16 Jul 2012 01:16:18 -0000
string today = String.Format("{0:ddd,' 'dd' 'MMM' 'yyyy' 'HH':'mm':'ss' 'K}", DateTime.Now);
棘手的事情来了,您可以通过执行以下操作来破解 HttpWebRequest 日期标头:
(不再做request.Date = something;
,换成下面的)
MethodInfo priMethod = request.Headers.GetType().GetMethod("AddWithoutValidate", BindingFlags.Instance | BindingFlags.NonPublic);
priMethod.Invoke(request.Headers, new[] { "Date", today });
从您的请求中获取日期(只是为了测试):
// "myDate" will output the same date as the first moment:
// Mon, 16 Jul 2012 01:16:18 -0000
// As you can see, you will never get this again:
// Mon, 16 Jul 2012 07:16:18 GMT
string myDate = request.Headers.Get("Date");
至此,您已经成功地将自己的格式和日期值设置为 HttpWebRequest 日期标头!
希望这可以帮助 :-)