有一些事情要澄清修复用手请求的情况下:
你的日期模式不正确。
的HttpWebRequest的request.Date
头只能得到改性在.NET框架4并根据该文档中,命名空间System.Net
将总是写此标头如使用GMT(UTC)格式标准形式。所以,无论你如何设置格式化日期,都无济于事!
在其他.NET框架版本中,您将无法修改HttpWebRequest request.Date
标头,因为它将使用实际日期,格式为正确的GMT(UTC)格式,除非您使用某种破解来设置自己的日期和格式(见下文)。
解决您的问题(测试工作):
你进口:
using System.Net;
using System.Reflection;
获取格式今天的日期:星期一,2012年7月16日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的日期头球攻门!
希望这有助于:-)
你是男人。 – Mitciv 2012-07-16 18:16:33
伟大的解决方案和示例。我必须为我的日期使用UNIX时间戳(十进制),这是一个完美的解决方案。干杯! – wloescher 2013-05-05 20:57:34
我希望我能多劳多得!很好的回答:) – Winnie 2017-09-26 03:39:02