本文整理汇总了C#中IWebClient.DoGetAsync方法的典型用法代码示例。如果您正苦于以下问题:C# IWebClient.DoGetAsync方法的具体用法?C# IWebClient.DoGetAsync怎么用?C# IWebClient.DoGetAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IWebClient
的用法示例。
在下文中一共展示了IWebClient.DoGetAsync方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetOpdsDataAsync
private async Task<StringBuilder> GetOpdsDataAsync(string url, IWebClient webClient)
{
try
{
var baseUri = new UriBuilder(url);
string queryToAppend = "rand=" + Guid.NewGuid();
baseUri.Query = baseUri.Query.Length > 1 ? baseUri.Query.Substring(1) + "&" + queryToAppend : queryToAppend;
string authorizationString = null;
if (!string.IsNullOrEmpty(CatalogModel.AuthorizationString))
{
authorizationString = EncryptService.Decrypt(CatalogModel.AuthorizationString);
}
var response = await webClient.DoGetAsync(baseUri.ToString(), authorizationString);
if (response.StatusCode == HttpStatusCode.Unauthorized ||
response.StatusCode == HttpStatusCode.Forbidden)
{
throw new CatalogAuthorizationException(CatalogType.OPDS, url);
}
var stream = await response.Content.ReadAsStreamAsync();
using (var reader = new StreamReader(stream))
{
return new StringBuilder(reader.ReadToEnd());
}
}
catch (WebException exception)
{
if (exception.Status != WebExceptionStatus.RequestCanceled)
{
if (NavigationStack.Any())
{
NavigationStack.Pop();
}
var statusCode = ((HttpWebResponse) exception.Response).StatusCode;
if (statusCode == HttpStatusCode.Unauthorized || statusCode == HttpStatusCode.Forbidden)
{
throw new CatalogAuthorizationException(CatalogModel.Type, url);
}
throw new ReadCatalogException(string.Format("Unable read catalog {0}", url));
}
}
catch (DataCorruptedException)
{
//skip DataCorruptedException
}
return await GetOpdsDataAsync(url, webClient);
}