ASP.NET:httpwebrequest日期标题解决方法

时间:2009-07-16 21:55:15

标签: asp.net vb.net httpwebrequest http-headers

我正在尝试与需要Web请求中的“Date”标头的API集成。您可能知道,.NET已经删除了在您的请求中追加甚至显示默认日期标题的功能,因此我想知道一种解决方法。

这里有一个问题:你不能使用TCPClients,因为我的服务器上没有套接字这样的“权限”。有没有办法“欺骗”系统伪造日期标题或欺骗它发布Date标题?或者我应该放弃这个API?

...谢谢

(PS,如果你愿意,语言是VB.NET :))

3 个答案:

答案 0 :(得分:1)

我找到了日期问题的答案,你只需要直接作为HttpWebRequest访问请求。这似乎是一个简单的答案,但它确实有效。

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Uri)  ;

request.Date = date;
request.Method = "POST";

答案 1 :(得分:0)

根据文档,系统将添加一个Date标头,其中包含当前日期和时间。你需要一个不同的标题值吗?

您可以使用request.Headers.AddWithoutValidate添加它。

答案 2 :(得分:0)

这不是世界上最快的代码,但它可能会工作一段时间:

Type type = request.Headers.GetType();
MethodInfo method = type.GetMethod("AddWithoutValidate", 
    BindingFlags.Instance | BindingFlags.NonPublic);
method.Invoke(request.Headers, new [] { "Date", DateTime.Now.ToString() })

请注意,使用反射来访问私有或受保护的成员是非常脆弱的,并且可能会破坏MS所做的任何.NET更新......