HttpClientResponse объект заявляет код состояния 200, несмотря на отсутствие фактического ответа сервера - PullRequest
0 голосов
/ 11 апреля 2020

Когда я вызываю 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. Прокси-сервер показывает исходящие запросы, но не показывает никаких ответов (как и ожидалось).

...