Bonjour ou bonsoir ! Comme l'indique le titre, j'ai cette erreur et google ne m'aide pas beaucoup. Avant tout, je voudrais d'abord expliquer ce que je veux faire :

Je veux télécharger une base de données de backup SQLite (.db) qui se trouve sur le serveur (php). Pour cela j'utilise le composant TRESTClient parce que j'y attache un JSON pour faire quelques vérifications avant de valider le téléchargement. Du côté serveur (après tout vérification), je récupère le fichier .db, constitue un tableau d'octet puis renvoie un JSON à mon client delphi.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
$myDb = 'c:/baseDeDonneesBackup.db'; // Le chemin du fichier est correct.
$labase = file_get_contents($myDb);
    for ($i=0; $i < strlen($labase); $i++) { 
        $tab[$i] = mb_ord($labase[$i], "UTF-8");
    }
    echo  json_encode(["status" => 1, "base" => $tab],JSON_UNESCAPED_UNICODE);

A partir de ce code php j'obtient un tableau similaire [83,81,76,105,116,101,32,102,111,114,109...].

Du côté de mon client Delphi, je tente d'enregistrer ce tableau (le contenu) dans un fichier en local, et pour cela je procède de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 try
    RESTRequest.Execute();
    reponseSever := TJSONObject.ParseJSONValue(RESTResponse.JSONText);
    resultat := True;
    traiterReponseServer(reponseSever); // Le traitement se fait dans cette fonction
  except
    on e: Exception do
    begin
      resultat := False;
    end;
 
 end;
Fonction de traitement du résultat

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
procedure TForm1.traiterReponseServer(contenuJson: TJSONValue);
var
  fileName: string;
  fs : TMemoryStream;
  aJSON: TJSONArray;
  mon_stream : TStream;
begin
 
  fileName := TPath.Combine( Tpath.Combine(Tpath.GetDocumentsPath, 'testerFichier'), 'base.db') ;
 
  mon_stream := TStream.Create;
  aJSON := contenuJson.GetValue<TJSONArray>('info');
 
  mon_stream := TDBXJSONTools.JSONToStream(aJSON); // Le problème est ici.
 
  fs := TMemoryStream.Create;
  fs.LoadFromStream(mon_stream);
  fs.SaveToFile(fileName);
 
end;
Normalement (selon moi), je m'attendais à recevoir mon fichier tout tranquillement, mais j'ai une erreur TDBXError avec le message "Impossible de convertir l'entrer JSON en flux". Je me demande bien là où j'ai fait mal fait les choses.

PS : j'ai privilégié TRESTClient pour deux choses principalement : 1. Pas de problème de TLS (Requête en https); 2. J'envoie assez facilement mon JSON.
Mais s'il y a des suggestions sur une meilleur façon de réaliser ce que je veux faire, je suis preneur