![](/img/trans.png)
[英]HttpClient.GetAsync never returns on Xamarin.Android
[英]Xamarin Android httpClient.getAsync causes Exception
當我打電話
public static async Task<User> GetUserAsync(string name)
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(Resource.RestBaseURI);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("APIKey", Resource.APIKey);
var responseMessage = await client.GetAsync($"api/Users/{name}");
if (!responseMessage.IsSuccessStatusCode)
throw new HttpResponseException(responseMessage.StatusCode);
var userDb = responseMessage.Content.ReadAsAsync<UserDb>().Result;
if (userDb == null)
throw new HttpResponseException(HttpStatusCode.NotFound);
var user = DbClientConverter.UserDbToUser(userDb);
user.RefuelEntityList = await RefuelEntityCommunicator.GetRefuelEntitiesAsync(user);
return user;
}
}
catch (HttpResponseException httpResponseException)
{
throw new HttpResponseException(httpResponseException.Response.StatusCode);
}
catch (HttpRequestException httpRequestException)
{
throw new HttpRequestException(httpRequestException.Message, httpRequestException);
}
catch (Exception exception)
{
throw new Exception(exception.Message, exception);
}
}
在Xamarin Android上
第12行中的await client.GetAsync導致異常:
“'System.Net.Http.FormattingUtilities'的類型初始值設定項引發了異常”
WPF應用程序中使用的相同代碼沒有問題。
任何想法如何解決這一問題?
解決方案1:似乎某些依賴項已損壞。 您是否嘗試過重新安裝NuGet軟件包?
從程序包管理器中,運行Update-Package Microsoft.AspNet.WebApi -reinstall。
解決方案2:使用NuGet安裝Web API 2.1 WebHost。
解決方案3:安裝軟件包Microsoft.AspNet.WebApi-版本5.xx
代替
client.DefaultRequestHeaders.Add("APIKey", Resource.APIKey);
采用
client.DefaultRequestHeaders.TryAddWithoutValidation("APIKey", Resource.APIKey);
這是因為“ APIKey”是非標准的自定義標頭
我想這是ReadAsAsync
擴展方法的問題。 請參閱此處以獲取自定義解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.