将参数添加到C#HttpWebRequest

时间:2017-04-21 23:36:03

标签: c# httpwebrequest

我希望能够修改c#HttpWebRequest对象的RequestUri中包含的url。 我想附加一个带票证ID的附加参数。 [比如& 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

1 个答案:

答案 0 :(得分:1)

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