[英]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),我想我會找到某種方法來允許我發出請求而不傳遞任何其他參數。 令我驚訝的是, WebClient
( DownloadData
, DownloadFile
, DownloadString
, OpenRead
等)中的所有方法都需要Uri或字符串作為參數。
如果您仍然必須手動構造URL以發出請求,那么具有可以添加值的BaseAddress和QueryString屬性的重點是什么? 我在這里使用了錯誤的工具嗎? 我應該使用WebRequest
嗎?
如果您希望使用這些查詢參數訪問http://contoso.com/test.html
,您可以編寫:
wc.DownloadString("test.html");
換句話說,當您從同一站點下載多個頁面時,最好使用BaseAddress
和QueryString
。
否則,使用Uri
或UriBuilder
類構造自己的絕對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.