有一些事情要澄清修複用手請求的情況下:
你的日期模式不正確。
的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