2013-09-11 5 views
2

Есть ли способ установить mimeType из HttpClientRequest?Dart - set mimetype HttpClientRequest

Я пытаюсь сделать некоторые UnitTests где я создаю экземпляр HttpClient, а затем послал запрос на пост с байтами данных в HttpServer, а затем разобрать его на основе mimeType я поставил. Что-то вроде этого:

import 'dart:io'; 

void main() { 
    HttpServer.bind('localhost', 8080) 
    .then((HttpServer server) { 
     server.listen((HttpRequest request) { 
     String mimeType = request.headers.contentType.mimeType; 
     if (mimeType == 'application/json') { 
      // parse bytes of data to json and then to map 
     } else if (mimeType == 'text/plain') { 
      // parse bytes of data to string 
     } 
     // do something with data 
     // close response 
     }); 
    }); 
    HttpClient client = new HttpClient(); 
    client.open('POST', '127.0.0.1', 8080, '/') 
    .then((HttpClientRequest r) { 
     r.add('{"val": 5}'.codeUnits); 
     // already tried both 
     r.headers.set(HttpHeaders.CONTENT_TYPE, 'application/json'); // doesn't work 
     r.headers.contentType = ContentType.parse('application/json'); // doesn't work 
     r.close(); 
    }); 
} 

Так HttpHeaders неизменна. Любое обходное решение?

ответ

3

Согласно docs, данные не должны быть изменены после вызова add(). Настройка заголовка перед добавлением данных будет работать:

r.headers.set(HttpHeaders.CONTENT_TYPE, 'application/json'); 
    r.add('{"val": 5}'.codeUnits); 
Смежные вопросы