C# 向WebClient发出的所有请求添加querystring参数
我已经扩展了C# 向WebClient发出的所有请求添加querystring参数,c#,C#,我已经扩展了WebClient类并重写了GetWebRequest方法。有没有办法在这个方法中向我的所有请求添加querystring参数 protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); HttpWebRequest webRequest = request as HttpWebRequest; if
WebClient
类并重写了GetWebRequest
方法。有没有办法在这个方法中向我的所有请求添加querystring参数
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
HttpWebRequest webRequest = request as HttpWebRequest;
if (webRequest != null)
{
}
}
我尝试过修改
地址
,但似乎没有效果。而且webRequest.Address
没有setter。我尝试了您的示例,通过将新的Uri
传递给base.GetWebRequest()
,可以在GetWebRequest
方法中修改地址:
然后如果我调用
newcustomwebclient().DownloadData(“http://stackoverflow.com“”
实际url(如fiddler所见)是为什么不在实际创建HttpWebRequest
时添加查询字符串?@Mayank,因为我不想在每次创建新请求时都添加查询字符串。您可以修改对基构造函数的调用中的地址吗?@PhilipPittle每个新请求的地址都不同。它不是静态的
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));
}
}