JSON auf REST Server hochladen

    JSON auf REST Server hochladen

    Heyho,

    nach dem ich mit meiner gestrigen Aufgabe fertig geworden bin (JSON-Datei auslesen), hänge ich jetzt wieder fest...:(
    Ich soll jetzt eine JSON Datei auf einen REST Server mittels API hochladen.

    Den normalen String in einen JSON umwandeln funzt schon aber iwie nimmt der Server das was ich ihm schicke nicht an...

    Hier kommt der Code:

    //...

    type
    TAuto = class(TObject)
    public
    Name: string;
    Preis: string;
    Farbe : string;
    Vorhanden : string;
    end;

    //...

    function TForm1.ObjectToJSON (AData: TObject) :TJSONValue;
    var
    Marshal : TJSONMarshal;
    begin
    Marshal := TJSONMarshal.Create();
    try
    Result := Marshal.Marshal(AData);
    finally
    FreeAndNil(Marshal);
    end;
    end;


    //...

    procedure TForm1.btnSubmitClick(Sender: TObject);
    var
    TESTAUTOS : TAuto;
    TESTJSON : TJSONValue;
    Parameter, Response: TStringSTream;
    jsonToSend:TStringList;
    blankerText : string;
    stream : TMemoryStream;
    JsonBytes : TBytes;
    teststring: string;


    begin
    jsonToSend := TStringList.Create;
    TESTAUTOS := TAuto.Create;
    TESTAUTOS.Name := 'AMG FIESTA';
    TESTAUTOS.Preis := '1337';
    TESTAUTOS.Farbe :='Silber';
    TESTAUTOS.Vorhanden := 'JA';

    //TESTJSON IST EINE FUNKTION
    TESTJSON := ObjectToJSON(TESTAUTOS);
    FreeAndNil(TESTAUTOS);
    Memo1Ausgabe.Text := TESTJSON.ToString;
    blankerText := Memo1Ausgabe.Text; //<-- Bis hier hin funzt es so wie ich es mir vorgestellt habe...

    stream :=TMemoryStream.Create;
    stream.Clear;
    WriteStringToSTream(stream,blankerText,enUTF8);
    stream.Position :=0;


    //Da es sich um eine verschlüsselte Verbindung handelt muss das übernommen werden.
    IdHTTP1.CookieManager := Cookiemanager;
    IdHTTP1.HandleRedirects := true;
    IdHTTP1.IOHandler := SSLIOHandler;
    IdHTTP1.ReadTimeout :=5000;

    IdHTTP1.Request.ContentType :='application/json';
    IdHTTP1.Request.CharSet :='utf-8';


    response := TStringStream.Create;

    //Falsch nach JSON konvertiert und es kommt auch keine Rückmeldung
    IdHTTP1.post('https://api.MeineDomain/meineDatenbank/DatenbankID/Profile?Schlüssel='+ Endbenutzerschluessel,stream);

    TESTJSON.Free;
    stream.Free;



    Was mache ich falsch? Oder gibt es eine bessere Lösung? Wie gesagt bin ich noch nicht so vertraut mit Delphi...

    EDIT: Es kommt aber zumindest ETWAS an, denn für jede Eintragung die ich gemacht habe wurde eine neue ID angefügt usw.
    In der Datenbank sieht das dann so aus:

    ID:36
    Name:""
    Preis:0
    Farbe:""
    Vorhanden:""


    Vielen Dank im Vorraus

    Fragger93

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Fragger93“ ()