更改HttpWebRequest实例的Uri?

时间:2011-02-16 10:29:50

标签: c# .net httpwebrequest uri

我有一个HttpWebRequest的实例,我正在拦截一个事件。 我想在发送请求之前编辑网址,但我找不到这样做的方法。 RequestUri属性是只读的。

我想过几种方法但似乎找不到可行的解决方案: - 使用反射来设置值? - 创建新请求,然后克隆所有属性。不知道怎么做。

2 个答案:

答案 0 :(得分:1)

如果您根据HTTP协议考虑,每个请求都是无状态/唯一的。将一个请求链接到另一个请求的唯一方法是以编程方式通过Cookie之类的东西,但对于HTTP协议本身,请求是唯一的。

我认为HttpWebRequest对象的设计考虑到了这一点。每个HttpWebRequest代表一个对URL的唯一调用,您可以为该调用构建参数。如果你想对另一个URL做另一个请求,你可以创建一个新的HttpWebRequest并传递你正在使用的状态信息,即:Cookie容器,标题信息等。

对此的冗长回答是该对象旨在具有只读URL,并且唯一的处理方法是:

  1. 如果您绝对需要使用给定的HttpWebRequest对象,请使用一些反射黑客,例如您已经完成的。

  2. 创建一个新的HttpWebRequest(WebRequest.Create())并将您的状态信息复制到新请求中。

答案 1 :(得分:-1)

您可以使用RewritePath执行此操作。

F.e。

HttpContext.Current.RewritePath("newurl.aspx");