C# 向HttpWebRequest添加参数

C# 向HttpWebRequest添加参数,c#,httpwebrequest,C#,Httpwebrequest,我希望能够修改包含在HttpWebRequest对象的RequestUri中的url。 我想附加一个带有票证Id的附加参数。[like&ticket=xyz123] 听起来这可能不可能做到,因为RequestUri是只读的。一些人建议使用反射来绕开它,但另一些人说,即使使用反射也不会起作用 还有别的办法吗 我是否能够使用HttpWebRequest CookieContainer包含票证信息?尽管票证不在cookie中,但需要一个特殊的服务调用来检索票证字符串 我正在尝试覆盖身份验证方法,如下所

我希望能够修改包含在HttpWebRequest对象的RequestUri中的url。 我想附加一个带有票证Id的附加参数。[like&ticket=xyz123]

听起来这可能不可能做到,因为RequestUri是只读的。一些人建议使用反射来绕开它,但另一些人说,即使使用反射也不会起作用

还有别的办法吗

我是否能够使用HttpWebRequest CookieContainer包含票证信息?尽管票证不在cookie中,但需要一个特殊的服务调用来检索票证字符串

我正在尝试覆盖身份验证方法,如下所示:

    protected override void HttpAuthenticate(HttpWebRequest request)
    {
        Uri uri = request.RequestUri;
        Uri newUrl = new Uri(AuthData.appendTicket(uri.ToString()));
        request.RequestUri = newUrl;  // Cannot do this because it is readonly

通过充分的反射黑客攻击,您可能能够强制它,但这与类的基本架构模型背道而驰:WebRequest的URL应该在创建时固定。如果您想向不同但相关的URL发出请求,为什么不使用WebRequest.Create来创建一个新的HttpWebRequest,该URL是通过摆弄原始WebRequest的RequestUri而形成的?

我只是尝试覆盖这一方法来更改身份验证机制。标准基本身份验证设置HttpWebRequest的凭据。相反,我希望能够添加票证信息——这通常是作为URL上的附加参数传递的。我理解这个愿望,但它就是不起作用。您可以更改要通过ref传递的参数,然后在方法中为新的HttpWebRequest更改输入HttpWebRequest。HttpWebRequest以这种方式构造的主要原因可能是为了防止在创建对象后将http URL替换为ftp或文件URL。