2016-04-15 8 views
0

Ich versuche, einen POST mit DART zu machen, und ich bekomme diesen Fehler, für jetzt möchte ich nur die Nachricht auf der Serverseite drucken, um sicher zu sein, dass ich es empfange, aber ich don ‚t wissen, wie der Fehler zu interpretieren:Ich mache POST mit Dart

  • in Server Side:

[WARNING] rpc: Response Status Code: 500 Headers: access-control-allow-credentials: true access-control-allow-origin: * cache-control: no-cache, no-store, must-revalidate content-type: application/json; charset=utf-8 expires: 0 pragma: no-cache Exception: RPC Error with status: 500 and message: Invalid argument(s)

  • in Client-Seite: enter image description here

An meiner Client-Seite in DART habe ich diesen Code:

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));} 

Und es auf meinem Server Side als Empfang:

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

    } 

Antwort

1

Wenn Sie eine POST Anfrage zu einer anderen Domäne als die Ihre Client-Anwendung wurde ursprünglich geladen, der Browser sendet eine Preflight-Anfrage (Anfragetyp OPTION). Ihr Server muss damit umgehen und richtig reagieren, sonst wird der Browser die eigentliche POST Anfrage nicht machen.

How to create/add middleware that adds default headers to each request zeigt, wie es mit dem shelf Paket zu tun.

Sie sehen, dass, wenn die Anforderung Methode ist OPTIONS es mit Header

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

Zusätzliche Header-Parameter je nach könnte notwendig sein, reagiert, was Sie versuchen zu tun.