Fehler "Request body format is wrong" (Microsoft API Cognitive Services)

MC-René

Erfahrenes Mitglied
Hallo zusammen,

ich sende einen Request an die Microsoft API Cognitive Services.

Die Vorgabe seitens MS für den Body ist:
PHP:
 {
     "documents": [
         {
             "language": "en",
             "id": "1",
             "text": "First document"
         },
         ...
         {
             "language": "en",
             "id": "100",
             "text": "Final document"
         }
     ]
}

Mein Code für den Body:
PHP:
$parameters2 = array("documents"=>array('id'=>$meine_id,'text'=>$mein_text_string));
$parameters2=json_encode($parameters2, JSON_FORCE_OBJECT);

Als Fehlermeldung bekomme ich:
"InvalidRequestBodyFormat" ["message"]=> "Request body format is wrong. Make sure the json request is serialized correctly and there are no null members"

Mein var_dump von $parameters2 sieht so aus:
PHP:
string(151) "{"documents":{"id":"meineID","text":"Hier steht mein Textstring."}}"

Habt Ihr nen Tipp für mich!?

VG
MC
 
Ich kenne die Vorlage nicht. Aber ein einfaches Vergleichen der Anforderungen und deinem Wert ergibt klare Unterschiede:

1) Da fehlt die "language"
2) Es fehlt der Array []. documents kann mehrere Items beinhalten. Auch wenn du nur Eines übergibst, solltest du trotzdem ein Array daraus erstellen
3) ID sollte eine Zahl sein, kein Text

So sollte mMn dein Parameter aussehen
Code:
{"documents":[{"language": "en","id":"1","text":"Hier steht mein Textstring."}]}
Das ergibt
PHP:
$meine_id = 1;
$mein_text_string = 'Hier steht mein Textstring';
$parameters2 = array("documents"=>array(array('language'=>'en', 'id'=>$meine_id, 'text'=>$mein_text_string)));
 
Danke erstmal für Deine Antwort...

Den Vorgaben Vergleich habe ich gemacht. Ich habe es nicht hinbekommen das Array zu generieren.
Ich dachte eigentlich dass das erste "array" (vor documents) dass erforderliche array generiert.
 
Arrays mit Keys ergibt im JSON {key1:value1,key2:value2}
Arrays ohne Keys ergibt im JSON [value1,calue2]

Die Vorlage sagt:
Code:
[{...},{...}]
Ergo ein Array ohne Keys, in dem Arrays mit Keys sind. In deinem Fall hast du halt nur ein inneres Array.
 

Neue Beiträge

Zurück