Когда я вызываю doGet, результирующий код состояния равен 200, даже несмотря на то, что служба, к которой он подключается, полностью отключена и поэтому не отвечает. Это не имеет смысла для меня. Почему?
import 'dart:async';
import 'dart:convert';
import 'dart:io';
static const String BASE_URL = "http://10.0.2.2:8080"; // currently offline
AppCookieJar cookieJar; //initialised elsewhere
doGet(String path) async {
try {
return doReq(path, (uri) => HttpClient().getUrl(uri));
}
catch (e) {
throw Exception('GET failed');
}
}
doReq(String path, Future<HttpClientRequest> Function(Uri) createReq, {String data}) async {
String url = "$BASE_URL$path";
Uri uri = Uri.parse(url);
HttpClientRequest req = await createReq(uri);
req.headers.contentType = ContentType.json;
req.cookies.addAll(cookieJar.loadForRequest(uri));
if (data != null)
req.write(data);
HttpClientResponse response = await req.close();
cookieJar.saveFromResponse(uri, response.cookies);
print('${response.statusCode}'); // this prints "200"
}
Я не вижу ошибок, исключений или отладочных выходных данных. Он просто работает гладко и затем сообщает об успешном запросе.
Этот код выполняется в приложении Flutter на виртуальном устройстве Android с прокси-сервером (Burpsuite), настроенным на 127.0.0.1:8081. Прокси-сервер показывает исходящие запросы, но не показывает никаких ответов (как и ожидалось).