followRedirects method
- Response response
Fonction prenant en charge les redirections dans le cadre d'une connexion à un service
Implementation
Future<http.Response> followRedirects(http.Response response) async {
final url = response.headers["location"];
/*final request = http.Request('GET', Uri.parse(url!))
..followRedirects = false
..headers['cookie'] = headers["Cookie"]!;
http.StreamedResponse resp = await client.send(request);*/
int redirectCount = 0;
while ((response.statusCode == 302 || response.statusCode == 303) && redirectCount < 10) {
final location = response.headers['location'];
if (location == null) break;
final newUrl = location.startsWith('http')
? location
: Uri.parse(response.request!.url.toString()).resolve(location).toString();
response = await session.get(Uri.parse(newUrl), headers: headers);
redirectCount++;
sleep(Duration(milliseconds: 10));
}
if (redirectCount >= 10) {
throw Exception("Trop de redirections (boucle probable)");
}
if (response.statusCode == 200){
logger("ON A REUSSI A SE CONNECTER YAHOOOO");
}
return response;
}