我正在尝试使用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错误和消息:无效的参数
在我的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);
}
答案 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'
}
根据您尝试的操作,可能需要其他标头参数。