我正在使用HttpClient(又名Web API客戶端)來使用RESTfull服務。 服務需要建立會話(通過登錄),然後在每次操作時銷燬(通過註銷)。因此,消費服務A的調用看起來是這樣的(僞)如何在使用Web API時概括登錄,操作和註銷HttpClient
// setup
create auth dictionary authDict
create authenticationContent using FormUrlEndodeContent(authDict)
create cookieContainer
create HttpClientHandler...
create HttpClient
// login
await httpClient.PostAsync(LoginUrl, authenticationContent);
do error checking
// perform Operation A
await httpClient.....post...or...get...
extract data, process it, tranform it, get a cup of coffee, etc, etc
populate OperationAResult
// logout
await httpClient.GetAsync(LogoutUrl);
// return result
return OperationAResult
我的問題是,我怎麼能輕易重用的設置,登錄和註銷針對不同的操作? 我應該創建一些方法,將採取行動<>如果是的話如何確保操作順序發生?
我已經看到這種方法在Codeplex上的HttpClient示例中創建自定義處理程序,它很好。但在同一個「操作」過程中,我需要「擊中」3個不同的URL(登錄,服務,註銷)。在SendAsync覆蓋中,我只有請求,所以必須創建一個單獨的HttpClient實例嗎?這就是我想要避免的...看看BingTranslate的例子,他們做了幾乎類似的方法,其中一個單獨的客戶端用於獲取Azure數據令牌... – zam6ak
...爲了讓事情「更容易」,一旦我打/ login一個cookie被創建(encypted autho),需要被「結轉」到下一個調用(操作)以及/註銷調用(這樣我不會超過最大會話數量)..... – zam6ak
@ zam6ak將HttpClient屬性添加到ConnectionHandler併爲其提供對Httpclient實例的引用。使用相同的HttpClient進行多個同時請求沒有問題。 –