REST API: "Could not decode json json_last_error: No error occurred"

Guten Morgen zusammen,

wir benutzen aktuell Showpare Version 5.1.1 & ich wollte mich an die REST API machen.

Ich habe die API wie in der Dokumentation beschrieben eingebunden und ein erstes Skript geschrieben:

delete('articles/3');

Ich wollte einfach nur testen ob die API so funktioniert, allerdings bekomme ich immer folgenden Error:

HTTP: 0 Could not decode json json_last_error: No error occurred Raw:

Kann mir jemand dabei helfen wie ich diesen Fehler vermeiden kann?

Wir benutzen PHP 5.6.17

 

Mit freundlichen Grüßen,

ent_dev

Würde mal versuchen mit Postman, etc. den API-Call zu machen um den Aufruf zu verifizieren.

Fehler könnte auf fehlende/falsche HTTP Methode/Header bzw. einem nicht/falsch gesetztem Request Body hindeuten

HTTP Methode sollte DELETE sein.

Header sollte gesetzt sein: Content-Type = application/json

Request Body sollte bei delete leer sein

Mit deinen Infos ist eine bessere “Diagnose” leider nicht möglich.

1 „Gefällt mir“

@stormerMike schrieb:

Würde mal versuchen mit Postman, etc. den API-Call zu machen um den Aufruf zu verifizieren.

Fehler könnte auf fehlende/falsche HTTP Methode/Header bzw. einem nicht/falsch gesetztem Request Body hindeuten

HTTP Methode sollte DELETE sein.

Header sollte gesetzt sein: Content-Type = application/json

Request Body sollte bei delete leer sein

Mit deinen Infos ist eine bessere „Diagnose“ leider nicht möglich.

Vielen Dank für deine Antwort. Mit Postman bekomme ich bei Delete nun folgendes Ergebnis:

{
    "success": true,
    "data": []
}

Der HTTPRequest sieht nun so aus (DigestAuth):

php

$request = new HttpRequest();
$request->setUrl('URL_ZU_API');
$request->setMethod(HTTP_METH_DELETE);

$request->setHeaders(array(
  'Postman-Token' => '8fdb6ad6-8a98-4f27-bff7-c0736a82c8a8',
  'cache-control' => 'no-cache',
  'Authorization' => 'XYZ',
  'Content-Type' => 'application/json'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

 

Schön das es funktioniert.

Den Postman-Token Header solltest du aber nicht brauchen.

1 „Gefällt mir“

Okay, alles klar und dann kann ich mir den Postman-Code quasi packen und ihn dann beliebig für meine Bedürfnisse anpassen (PUT/DELETE/POST) ?

@ent_dev schrieb:

Okay, alles klar und dann kann ich mir den Postman-Code quasi packen und ihn dann beliebig für meine Bedürfnisse anpassen (PUT/DELETE/POST) ?

Mit Postman hat der Code ja nichts mehr zu tun. Ich meinte in meiner ursprünglichen Antwort mit „Postman den API-Call zu machen“ eigentlich das ausführen des Requests im externen Program wie Postman. Weiß nicht ob du das auch gemacht hast aber solange es jetzt funktioniert passt’s ja.

Bei z.B. bei PUT Aktionen musst du halt auch den HTTP Body korrekt mit dem JSON Payload befüllen.

Ich hab z.B. in meinem Import Skript GuzzleHttp verwendet und darum dann eigene Client Klassen gebaut. Zum Beispiel setze ich In meinem Client dann nur base_uri, username/authkey per config array und rufe dann z.B.

$swArticle = $articleClient->fetchAllArticles();

auf.

1 „Gefällt mir“