Я использую Xamarin.Forms и запускаю приложение на Android-симуляторе и на своем мобильном устройстве
Когда я пытаюсь отправить HttpRequestMessage, мое приложение выключается. Это происходит в методе SendRequest, но иногда я получаю Ошибка при отправке запроса
Я также создал консольное приложение, проверил запрос там и все работает, но Android нет.
public async Task<TResult> PostAsync<TResult>(string uri, IRequestData data, string token = "", string header = "")
{
var request = new HttpRequestMessage(HttpMethod.Post, uri);
request.AddAuthoriationHeader(token);
var content = data.ToJson();
request.SetContent(content, ContentTypes.Json);
var response = await SendRequestAsync(request);
var result = await HandleResponseAsync<TResult>(response);
return result;
}
public static void SetContent(this HttpRequestMessage request,
string content,
ContentTypes contentType)
{
request.Content = new StringContent(content,
Encoding.UTF8,
contentType.Value());
}
public static string Value(this ContentTypes contentType)
{
switch (contentType)
{
case ContentTypes.XxxForm:
return "application/x-www-form-urlencoded";
case ContentTypes.Json:
return "application/json";
default:
throw new ArgumentOutOfRangeException(nameof(contentType), contentType, null);
}
}
private async Task<HttpResponseMessage> SendRequestAsync(HttpRequestMessage request)
{
try
{
using (var client = new HttpClient())
{
return await client.SendAsync(request); // Shut down on this line
}
}
catch (ArgumentNullException e)
{
Console.WriteLine(e.Message);
throw;
}
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
throw;
}
catch (HttpRequestException e)
{
Console.WriteLine(e.Message);
throw;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
}
Что это может быть и почему работает преобразование в консоли на локальный хост, но с ошибкой телефона и эмулятора?