Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

REST Fehlermeldung bei der Erstellung eines Order-Objekts

WuuDuu
Autor ★★
27 Beiträge

Hallo zusammen,

 

bei der Erstellung einer Order über die REST API bekomme ich die Fehlermeldung request.syntax.error - Die Anfrage war syntaktisch inkorrekt.

 

Ich hatte zuvor im Body dieses JSON Objekt übergeben:

{
    bestEx = TRUE;
    depotId = XXXXXXXXXXXXXXXXXXXX;
    instrumentId = 0BA1CC9F418245638CE252DB2AAC4664;
    orderType = MARKET;
    quantity = "93.000";
    side = BUY;
    validityType = GFD;
    venueId = NULL;
}

das Objekt wird in Objective C als NSDictionary * order angelegt und an die REST API wie folgt übergeben:

NSError * error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:order options:NSJSONWritingPrettyPrinted error:&error];
[request setHTTPBody:jsonData];

Wo liegt der Fehler?

23 ANTWORTEN

__dpk
Mentor
856 Beiträge

Falls die Darstellung hier im Forum jetzt nicht verfälscht ist, sondern den String im Original zeigt, so ist das syntaktisch kein richtiges JSON, was ja auch die Fehlermeldung aussagt.

 

Siehe hier:  https://de.wikipedia.org/wiki/JavaScript_Object_Notation

 

 

Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein.
- Albert Einstein -

WuuDuu
Autor ★★
27 Beiträge

vielen Dank für die schnelle Antwort. Das JSON Objekt hatte ich als Dictionary "order" anglelegt. Das ist das, was oben gezeigt wurde. Dieses Dictionary wird dann in NSData umgewandelt:

[NSJSONSerialization dataWithJSONObject:order options:NSJSONWritingPrettyPrinted error:&error];

ich habe probeweise mal einen String "von Hand" zusammengebaut:

{"depotId":"4XXXXXXXXX","bestEx":"TRUE","orderType":"LIMIT","side":"BUY","instrumentId":"0BA1CC9F418245638CE252DB2AAC4664","venueId":"NULL","quantity":"2.000","limit":"0.0","validityType":"GFD"}

gibt aber die gleiche Fehlermeldung.

DieMacht
Experte ★★
470 Beiträge

Versuch mal folgendes (nicht alles in JSON ist ein String)

 

"venueId":"NULL" -> "venueId":null

"bestEx":"TRUE" -> "bestEx":true

etc.

 

Ansonsten sieht Dein JSON auf den ersten Blick formal korrekt aus.

 

Viele Grüße

Stefan

 

PS: vielleicht auch noch "quantity" und "limit" in Floats umwandeln

PPS: ich rate hier nur, weil ich zwar JSON kenne, die API aber nicht, hast Du einen Link zur Doku?

WuuDuu
Autor ★★
27 Beiträge

ja, die Zahlen hatte ich schon gesehen und ohne Anführungszeichen gesetzt

{"depotId": "4XXXXXXXX", "bestEx": true, "orderType": "LIMIT", "side": "BUY", "instrumentId": "BE448C5DFBA24584B14F74B0761460BE", "venueId": null, "quantity": 1.000, "limit": 0.0, "validityType": "GFD"}

das hat aber leider auch nicht geholfen. Die Doku beschränkt sich leider auf genau eine Zeile:

Doku REST APIDoku REST API

DieMacht
Experte ★★
470 Beiträge

Hmm, wir brauchen hier wohl die Definition von "JSON-Objekt Order", denn das ist genau das, was Du im Body des Requests schicken sollst.

 

Nix für ungut und viele Grüße

Stefan

WuuDuu
Autor ★★
27 Beiträge

vielleicht kann ja ein comdirect-Fachmann die Doku mal entsprechend erweitern (und gerne vorab hier die Details nennen), sonst klappt das mit den Orders per API nicht.

SMT_Jan-Ove
ehemaliger Mitarbeiter
4.279 Beiträge

Hallo @WuuDuu,

 

die Beschreibung des JSON-Objekts Order findest du in der Doku im Kapitel 7.2.3 Order.

 

Hilft dir das weiter oder meinst du etwas anderes?

 

Beste Grüße

Jan-Ove

WuuDuu
Autor ★★
27 Beiträge

Du meinst wahrscheinlich 7.2.2. Ja, danach hatte ich versucht das Objekt mit Mindestanforderungen zu erstellen. Ich verstehe nur die Fehlermeldung nicht. Wenn im Datensatz etwas fehlt ist das ja kein Syntaxfahler. Hat einer ein Code-Beispiel für das ERstellen von Orders?

SMT_Jan-Ove
ehemaliger Mitarbeiter
4.279 Beiträge

Hallo @WuuDuu,

 

in der aktuellen Dokumentation (Version April) findest du in Kapitel 11.2 zahlreiche Beispiele, wie der Body der Order-Schnittstelle aufgebaut werden muss. Außerdem kannst du in unserer Postman-Collection vordefinierte Requests finden, deren Aufrufe du dann von Postman in deine präferierte Programmiersprache exportieren lassen kannst.


Der Syntaxfehler bei deinem Request entsteht z.B. bei der Definition von quantity und limit. Hier wird neben dem Wert auch eine Einheit erwartet:

 

{"value":"5","unit":"XXX"}

 

Beste Grüße

Jan-Ove