Dolphin
Dolphin

Reputation: 39095

http headers are not mutable in flutter

I am using this code to send http request using Dart:

var request = await httpClient.postUrl(Uri.parse(url));
      Map jsonMap = {'pageSize': 10};
      request.add(utf8.encode(json.encode(jsonMap)));
      request.headers.set('content-type', 'application/json');
      var response = await request.close();
      if (response.statusCode == HttpStatus.OK) {
}

but it shows:

HttpException: HTTP headers are not mutable

why give me this tips and what should I do fix this?

Upvotes: 0

Views: 470

Answers (1)

BlackBear
BlackBear

Reputation: 66

You need to check HttpHeaders class page. (https://api.dart.dev/stable/2.10.5/dart-io/HttpHeaders-class.html)

HttpRequest and HttpClientResponse always have immutable headers. HttpResponse and HttpClientRequest have immutable headers from the moment the body is written to.

request.add(utf8.encode(json.encode(jsonMap)));

This line is add Request Body so made HttpClientRequest header to immutable. So if you want to add headers, you need to do it before this line.

var request = await httpClient.postUrl(Uri.parse(url));
      Map jsonMap = {'pageSize': 10};
      request.headers.set('content-type', 'application/json');
      request.add(utf8.encode(json.encode(jsonMap)));
      var response = await request.close();
      if (response.statusCode == HttpStatus.OK) {
}

Upvotes: 1

Related Questions