Я делаю запрос к веб-API ASP. Net для получения токена. Я могу сделать это успешно с пакетом HTTP dart следующим образом:
Uri address = Uri.parse('https://myaddress:myport/token');
var response = await http.post(
address,
body: {
'username': 'MyUsername',
'password': 'MyPassword',
'grant_type': 'password'
},
).timeout(Duration(seconds: 20));
return response.body;
Нет проблем с почтальоном:
Теперь я хочу сделать то же самое с базовым классом dart: io в качестве сервера тестирования имеет самозаверяющий сертификат, который, как я обнаружил, для HTTP-пакета не имеет обхода (может быть, это неправильно), но я не могу понять, в чем причина ошибки, так как при отладке сервера запросы никогда не попадают в следующую строку code:
Uri address = Uri.parse('https://myaddress:myport/token');
HttpClient httpClient = HttpClient();
httpClient.connectionTimeout = Duration(seconds: 20);
httpClient.badCertificateCallback = ((X509Certificate cert, String host, int port) => true); // Allow self signed certificates
HttpClientRequest request = await httpClient.postUrl(address);
final Map<String, String> payLoad = {
'username': 'MyUsername',
'password': 'MyPassword',
'grant_type': 'password'
};
request.headers.contentType = new ContentType("application", "x-www-form-urlencoded", charset: "utf-8");
request.add(utf8.encode(json.encode(payLoad)));
// request.write(payLoad);
HttpClientResponse response = await request.close();
String responseBody = await response.transform(utf8.decoder).join();
httpClient.close();
responseBody всегда:
"{"error":"unsupported_grant_type"}"
Поэтому я предполагаю, что моя кодировка или структура неверны, но со всеми возможностями, которые я пробовал, ничего не работает, любая помощь будет оценена .