明確にすることがいくつかあります:
日付パターンが正しくありません。
HttpWebRequestrequest.Date
ヘッダーは、.NET Framework 4でのみ変更できます。ドキュメントによると、名前空間は常にこのヘッダーをGMT(UTC)形式System.Net
を使用して標準形式で書き込みます。だから、あなたが望むようにあなたの日付をフォーマットするためにあなたができることは何でも、うまくいきません!
他の.NETFrameworkバージョンでは、独自の日付と形式を設定するために一種のハックを使用しない限り、正しいGMT(UTC)形式で実際の日付を使用するため、HttpWebRequestヘッダーを変更できませんrequest.Date
(以下を参照)。
問題の解決策(テスト済みで機能中):
あなたの輸入品:
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の日付ヘッダーに正常に設定できました。
お役に立てれば :-)