簡體   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