Как установить тип контента для request.response в Dart Server? - PullRequest
0 голосов
/ 02 февраля 2019

Я установил свой сервер дартс, как показано ниже.Я могу отправлять данные из приложения Flutter Mobile и получать обратно с сервера Dart.

Если в Dart Server используется метод запроса GET, я подключаюсь к сокету tcp и получаю некоторые данные.данные, которые нужно отправить в приложение Flutter, должны быть в формате JSON.

Я пытаюсь установить для request.response.headers.contentType значение json, и я получаю сообщение об ошибке HttpException: HTTP-заголовки не изменяемы.

Часть кода:

var _secureResponse = {};
_secureResponse[“Data”] = "$_returningServerData";
_secureResult = json.encode(_secureResponse);

request.response.headers.contentType = new ContentType("application", "json", charset: "utf-8");
request.response.write(_secureResult);
request.response.close();

Ошибка:

  • ноль
  • Необработанныйисключение: HttpException: заголовки HTTP не являются изменяемыми
  • HttpHeaders._checkMutable (dart: _http / http_headers.dart: 447: 20)
  • HttpHeaders.contentType = (dart: _http / http_headers.dart:267: 5)

Код сервера:

Future main() async {
  final HttpServer server = await HttpServer.bind("127.0.0.1", 8080);
  server.listen((HttpRequest request) async {

    print(request.headers.contentType);

    try {
      if (request.method == "GET") {
         String _requestData = ......
          Socket _socket = await Socket.connect('192.168.22.129', 3000);

          // READ FROM CSERVER
          _socket.listen((List<int> event) {
            _reply = new String.fromCharCodes(event).trim();
          });

          // WRITE TO SERVER
          _socket.add(utf8.encode('$_requestData\r\n'));

          // wait 1 seconds
          await Future.delayed(Duration(milliseconds: 1000));
          _socket.close();

          var _secureResponse = {};
          _secureResponse["Data"] = "$_reply";
          _secureResult = json.encode(_secureResponse);

          request.response.headers.contentType = new    
          ContentType("application", "json", charset: "utf-8");
          request.response.write(_secureResult);
          request.response.close();

        }

    } finally {
      var _secureResponse = {};
      _secureResponse["Data"] = "ERROR";
      _secureResult = json.encode(_secureResponse);

      request.response.headers.contentType = new 
      ContentType("application", "json", charset: "utf-8");
      request.response.write(_secureResult);
      request.response.close();
    }
  });
}

1 Ответ

0 голосов
/ 05 февраля 2019

См. https://api.dartlang.org/stable/2.1.0/dart-io/HttpHeaders-class.html

Вы пробовали что-то вроде

request.headers.set(HttpHeaders.cacheControlHeader,
                    'max-age=3600, must-revalidate');

Если вы строите сервер в Dart, могу я предложить использовать пакет : полка - это намного удобнее для пользователя.

...