http使用application / json content-type发布地图对象

时间:2014-03-19 17:41:10

标签: rest dart

我在尝试使用"包时遇到问题:http / http.dart' pub包将一些JSON数据发布到Web服务。我已正确格式化数据(我通过使用Chrome的高级REST客户端扩展程序确认),唯一的区别是内容类型被强制为错误的类型(Web服务只接受" application / json&# 34):

如果body是Map,则使用编码将其编码为表单字段。请求的内容类型将设置为" application / x-www-form-urlencoded&#34 ;;这不能被覆盖。

文档建议:

要对请求进行更细粒度的控制,请改用Request或StreamedRequest。

将这些中的任何一个用于HTTP POST以及主体的Map和Content-Type" application / json"?我被困了......

1 个答案:

答案 0 :(得分:2)

您可以在客户端使用HttpRequest

HttpRequest.request(url, method: 'POST',
    requestHeaders:{'Content-Type': 'application/json;charset=utf-8'},
    sendData: '{"a":1}').then((r) => ....);

服务器端的HttpClient

import 'dart:convert';
import 'dart:io';
main() {
  HttpClient client = new HttpClient();
  client.postUrl(Uri.parse("...")).then((HttpClientRequest request) {
    request.headers.add('Content-Type', 'application/json;charset=utf-8');
    request.write('{"a":1}');
    return request.close();
  }).then((HttpClientResponse response) {
    UTF8.decodeStream(response).then(print);
  });
}