Хорошо, я исправил проблему путем отладки, шаг за шагом.
Кажется, что Android не нравятся самозаверяющие сертификаты, поэтому я не мог настроить его на использование HTTPS. в конце.
Что я сделал, так это то, что я заставил его работать с единственным HTTP, и это шаги:
- Измените IIS на локальную среду выполнения (по умолчанию имяпроект)
- Удалить
app.UseHttpsRedirection();
в способе настройки сервера
Теперь мы включили HTTP-запросы к нашему серверу. Далее следует запустить сервер через нашу локальную среду выполнения (которую мы можем изменить с помощью кнопки Отладка в VS).
Теперь мы должны иметь возможность доступа к API в нашем браузере в эмуляторе Android с помощьюhttp запрос например http://localhost:5000/weatherforcast
. Помните, что ASP.NET Core 3.0 по умолчанию обслуживает HTTPS на порту 5001 и HTTP на 5000.
Затем Android использует псевдоним для IP-адреса локальной машины, на которой работает сервер, поэтому вместо записи localhost:<port>
мы должны написать 10.0.2.2:<port>
Наконец, я упростил вызов API в клиенте, чтобы он выглядел так:
static Future<Profile> getUserProfile() async {
String url = 'http://10.0.2.2:5000/weatherforecast';
final reply = await http.get('$url');
var responseJson = json.decode(reply.body);
return Profile.fromJson(responseJson);
}