使用Dart进行POST

时间:2016-04-15 00:51:09

标签: dart

我正在尝试使用DART进行POST并且我收到此错误,因为现在我只想在服务器端打印消息以确保我收到它,但我不知道如何解释错误:

    服务器端的
  

[警告] rpc:   响应     状态代码:500     头:       access-control-allow-credentials:true       access-control-allow-origin:*       cache-control:no-cache,no-store,must-revalidate       content-type:application / json;字符集= utf-8的       到期:0       编译指示:无缓存     例外:       状态为500的RPC错误和消息:无效的参数

    客户端
  • enter image description here

在我的DART客户端,我有这个代码:

async.Future<core.List> loadFiles(heatMapMessages request){

  var _url=null;
  var _queryParams = new core.Map();
  var _uploadMedia = null;
  var _uploadOptions = null;
  var _downloadOptions = commons.DownloadOptions.Metadata;
  var _body = null;

  if (request != null) {
    _body = convert.JSON.encode(converterClass.toJson(request));
  }

  _url = "load";
  var _response = _requester.request(_url, "POST",
    body: _body,
    queryParams: _queryParams,
    uploadOptions: _uploadOptions,
    uploadMedia: _uploadMedia,
    downloadOptions: _downloadOptions);

  return _response.then((data) => converterClass.fromJson(data));
}

在我的服务器端接收它:

  @ApiMethod(method: 'POST', path: 'load')
  Future<List<String>> loadFiles(heatMapMessages filename1) async{
    print("test "+filename1.jsonInfo);
  }

1 个答案:

答案 0 :(得分:1)

如果您向与最初加载客户端应用程序的域不同的域发出POST请求,则浏览器会发送预检请求(请求类型OPTION)。您的服务器需要处理它并正确响应,否则浏览器不会发出实际的POST请求。

How to create/add middleware that adds default headers to each request显示了如何使用shelf包。

如果请求方法为OPTIONS,您会看到它以标题

响应
{
  'Access-Control-Allow-Origin': '*',
  'Content-Type': 'text/html'
}

根据您尝试的操作,可能需要其他标头参数。