将查询字符串参数添加到 Web 客户端发出的所有请求中

本文关键字:请求 客户端 字符串 查询 参数 添加 Web | 更新日期: 2023-09-27 18:32:37

我已经扩展了WebClient类并覆盖了GetWebRequest方法。有没有办法在此方法中向我的所有请求添加查询字符串参数?

protected override WebRequest GetWebRequest(Uri address)
{
    WebRequest request = base.GetWebRequest(address);
    HttpWebRequest webRequest = request as HttpWebRequest;
    if (webRequest != null)
    {
    }
}

我尝试修改address但似乎没有帮助。而且webRequest.Address没有二传手。

将查询字符串参数添加到 Web 客户端发出的所有请求中

我尝试了您的示例,并且能够通过将新Uri传递给base.GetWebRequest()来修改GetWebRequest方法中的地址:

public class CustomWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        var newUrl = address.OriginalString;
        if (newUrl.Contains("?"))
            newUrl += "&";
        else
            newUrl += "?";
        newUrl += "MyCustomParam=value";

        return base.GetWebRequest(new Uri(newUrl));
    }
}

然后,如果我调用new CustomWebClient().DownloadData("http://stackoverflow.com")实际的网址(如小提琴手看到的)是 https://stackoverflow.com/?MyCustomParam=value