我有一个HttpWebRequest的实例,我正在拦截一个事件。 我想在发送请求之前编辑网址,但我找不到这样做的方法。 RequestUri属性是只读的。
我想过几种方法但似乎找不到可行的解决方案: - 使用反射来设置值? - 创建新请求,然后克隆所有属性。不知道怎么做。
答案 0 :(得分:1)
如果您根据HTTP协议考虑,每个请求都是无状态/唯一的。将一个请求链接到另一个请求的唯一方法是以编程方式通过Cookie之类的东西,但对于HTTP协议本身,请求是唯一的。
我认为HttpWebRequest对象的设计考虑到了这一点。每个HttpWebRequest代表一个对URL的唯一调用,您可以为该调用构建参数。如果你想对另一个URL做另一个请求,你可以创建一个新的HttpWebRequest并传递你正在使用的状态信息,即:Cookie容器,标题信息等。
对此的冗长回答是该对象旨在具有只读URL,并且唯一的处理方法是:
如果您绝对需要使用给定的HttpWebRequest对象,请使用一些反射黑客,例如您已经完成的。
创建一个新的HttpWebRequest(WebRequest.Create())并将您的状态信息复制到新请求中。
答案 1 :(得分:-1)