繁体   English   中英

什么是WebClient的BaseAddress和QueryString属性用于?

[英]What are WebClient's BaseAddress and QueryString properties used for?

我试图实例化一个WebClient如下:

WebClient wc = new WebClient();
wc.BaseAddress = "http://contoso.com";
wc.QueryString.Add("ctNm", "some name");
wc.QueryString.Add("port", "title");
wc.QueryString.Add("rx", "1");
wc.QueryString.Add("own", "userx");
wc.QueryString.Add("asOfDt", "02/23/2011");

由于我已经定义了我的Web请求所需的一切(我的意思是,我已经定义了BaseAddress和QueryString),我想我会找到某种方法来允许我发出请求而不传递任何其他参数。 令我惊讶的是, WebClientDownloadDataDownloadFileDownloadStringOpenRead等)中的所有方法都需要Uri或字符串作为参数。

如果您仍然必须手动构造URL以发出请求,那么具有可以添加值的BaseAddress和QueryString属性的重点是什么? 我在这里使用了错误的工具吗? 我应该使用WebRequest吗?

如果您希望使用这些查询参数访问http://contoso.com/test.html ,您可以编写:

wc.DownloadString("test.html");

换句话说,当您从同一站点下载多个页面时,最好使用BaseAddressQueryString

否则,使用UriUriBuilder类构造自己的绝对Uri,并将完全形成的Uri传递给DownloadString (或者您需要调用的任何方法)。

来自http://msdn.microsoft.com/en-us/library/system.net.webclient.baseaddress.aspx

BaseAddress属性包含与相对地址组合的基URI。 当您调用上载或下载数据的方法时,WebClient对象将此基URI与您在方法调用中指定的相对地址组合在一起。 如果指定绝对URI,则WebClient不使用BaseAddress属性值。

因此,BaseAddress正在WebClient上执行它应该为所有可以调用的方法执行的泛型操作。 可以在彼此重新使用此单个一次性配置的Web客户端实例之后调用多个方法。

方法本身负责提供相对于BaseAddress的执行路径,或覆盖预配置BaseAddress的绝对路径。

对我来说很合乎逻辑:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM