Переход по редиректу в Dart
Сервер может ответить кодом перенаправления и
новым адресом в заголовке. У клиента на базе
dart:io поведение задают полем
followRedirects. Высокоуровневый
http.get по умолчанию следует редиректам.
Если followRedirects равен false,
клиент останавливается на первом ответе. Для
"/redirect/1" код будет перенаправления,
а не финальный успех:
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:http/io_client.dart';
void main() async {
var inner = HttpClient()..followRedirects = false;
var client = IOClient(inner);
var response = await client.get(
Uri.parse('https://httpbin.org/redirect/1'),
);
print(response.statusCode);
client.close();
}
Обычный http.get следует по GET
перенаправлениям и возвращает ответ конечного
адреса. Тот же путь дает другой код:
import 'package:http/http.dart' as http;
void main() async {
var response = await http.get(
Uri.parse('https://httpbin.org/redirect/1'),
);
print(response.statusCode);
}
Выведите код ответа для
"https://httpbin.org/redirect/1",
если клиент не следует перенаправлениям.
Отправьте два чтения на тот же адрес: сначала без следования редиректу, затем с обычным режимом. Напечатайте оба кода через пробел.