Не работает POST запрос в мобильном приложении .NET MAUI
Я пробую создать клиент-серверное мобильное приложение с помощью MAUI и ASP.NET Core 8. В клиенте приложения есть кнопка, по нажатию которой в базу данных (PostgreSQL) через API записывается тестовая строчка каждую секунду. Эмулятор Android и сервер запускаются на локальной машине. Сервер вроде бы работает, потому что тестовые запросы через swagger отрабатывают верно, запись в БД появляется, также отрабатывают запросы с приложения API Tester на телефоне (реальном). Но при нажатии на кнопку, выскакивает исключение "Connection failure". Возможно дело в адресе POST запроса или в end point'е ? Порты менять пробовал, в json файлах сервера у меня следующее:
1. appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=SensorDataDb;Username=postgres;Password=123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
}
2. launchSettings.json
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:49050",
"sslPort": 44370
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5293",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7130;http://localhost:5293",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
3. Код метода из клиента мобильного приложения
private async Task SendDataAsync()
{
while (_isSending)
{
var data = new
{
Data = "Sample data from mobile app"
};
var json = JsonSerializer.Serialize(data);
Jsonlabel.Text = json;
var content = new StringContent(json, Encoding.UTF8, "application/json");
try
{
var response = await _client.PostAsync("http://10.0.2.2:5000/api/SensorData", content);
response.EnsureSuccessStatusCode();
responseBody = await response.Content.ReadAsStringAsync();
}
catch (HttpRequestException httpRequestException)
{
StatusLabel.Text = $"Request error: {httpRequestException.Message}";
}
catch (Exception ex)
{
StatusLabel.Text = $"Error: {responseBody}";
}
await Task.Delay(1000);
}