Beispiel RestAPI
-
- Beiträge: 230
- Registriert: Di 17. Mär 2009, 10:51
- OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)
Beispiel RestAPI
Hallo
Kennt jemand ein einfaches Beispiel um mit Lazarus via RestAPI Informationen aus einer Webseite auszulesen?
Alle meine Versuche mit httpsend von (ararat) synpase auch nur irgendetwas von https://jsonplaceholder.typicode.com/todos auszulesen
sind ohne den kleinsten Erfolg gescheitert.
Gruß
Michael
Kennt jemand ein einfaches Beispiel um mit Lazarus via RestAPI Informationen aus einer Webseite auszulesen?
Alle meine Versuche mit httpsend von (ararat) synpase auch nur irgendetwas von https://jsonplaceholder.typicode.com/todos auszulesen
sind ohne den kleinsten Erfolg gescheitert.
Gruß
Michael
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2641
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Beispiel RestAPI
Hier: www.michael-fuchs.net/newsgroups/lazaru ... xample.zip
Ohne Synapse sondern mit dem FpHttpClient und auch nur schnell zusammengefriemelt.
Ohne Synapse sondern mit dem FpHttpClient und auch nur schnell zusammengefriemelt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 230
- Registriert: Di 17. Mär 2009, 10:51
- OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)
Re: Beispiel RestAPI
Danke für die Hilfe.
Allerdings habe ich hier noch Probleme beim compilieren in der Funktion ParseJson:
Muß ich hier noch irgendeine Komponente installieren?
Gruß
Michael
Allerdings habe ich hier noch Probleme beim compilieren in der Funktion ParseJson:
Code: Alles auswählen
function TForm1.ParseJson(const Json: String): TJSONArray;
begin
with TJSONParser.Create(Json, [joUTF8]) do begin
Result := Parse as TJSONArray;
Free;
end;
end;
Code: Alles auswählen
Projekt kompilieren, Ziel: JsonExample.exe: Exit code 1, Fehler: 3
unit1.pas(67,34) Error: Identifier not found "joUTF8"
unit1.pas(67,43) Error: Expression type must be class or record type, got <erroneous type>
unit1.pas(68,15) Error: Identifier not found "Parse"
Muß ich hier noch irgendeine Komponente installieren?
Gruß
Michael
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2641
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Beispiel RestAPI
Naja, wenn deine Signatur unten stimmt, dann solltest du mal auf ein aktuelles Lazarus updaten.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 230
- Registriert: Di 17. Mär 2009, 10:51
- OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)
Re: Beispiel RestAPI
m.fuchs hat geschrieben:Naja, wenn deine Signatur unten stimmt, dann solltest du mal auf ein aktuelles Lazarus updaten.
Hatte ich auch kurz daran gedacht, aber da das bei Dir genauso ist, hatte ich den Gedanken wieder verworfen.
Dann schau ich mal nach einer neueren Version.
Ich hatte vor einiger Zeit schon mal versucht eine aktuelle Version zu installieren, was aber aus irgend einen Grund nicht funktioniert hat. Daraufhin bin ich wieder zur 1.6 gewechselt.
Gruß
Michael
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2641
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Beispiel RestAPI
catweasel hat geschrieben:m.fuchs hat geschrieben:Naja, wenn deine Signatur unten stimmt, dann solltest du mal auf ein aktuelles Lazarus updaten.
Hatte ich auch kurz daran gedacht, aber da das bei Dir genauso ist, hatte ich den Gedanken wieder verworfen.
Mea culpa, hatte ich nicht aktualisiert.
Noch eine Idee: ersetz die Zeile mal durch
Code: Alles auswählen
with TJSONParser.Create(Json, True) do begin
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 230
- Registriert: Di 17. Mär 2009, 10:51
- OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)
Re: Beispiel RestAPI
m.fuchs hat geschrieben:Noch eine Idee: ersetz die Zeile mal durchdann sollte es auch mit 1.6 gehen.Code: Alles auswählen
with TJSONParser.Create(Json, True) do begin
Super, so funktioniert es.
Ich hatte zwar zunächst Probleme, daß lag aber daran das diese Webseite mit den Testdaten im Internet liegt und hier über einen Proxy läuft.
Die "richtige" Seite die ich abfragen muß liegt im eigenen Netzwerk, ohne Proxy.
Danke und noch einen schönen Sonntag
Michael
Re: Beispiel RestAPI
A propos JSON:
Ich möchte nochmal auf das viel zu unbekannte Tool JSON-Viewer hinweisen, welches sich in <laz>/tools/jsonviewer/ befindet.
Das ist wirklich praktisch, wenn man den Inhalt und Struktur einer JSON Datei anschauen möchte.
Bei mir ist das im System mit *.json verknüpft.
Ich möchte nochmal auf das viel zu unbekannte Tool JSON-Viewer hinweisen, welches sich in <laz>/tools/jsonviewer/ befindet.
Das ist wirklich praktisch, wenn man den Inhalt und Struktur einer JSON Datei anschauen möchte.
Bei mir ist das im System mit *.json verknüpft.
-
- Beiträge: 6207
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beispiel RestAPI
Ist JSON ein erweitertes, flexibleres Format von ursprünglich INI, später XML ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2641
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Beispiel RestAPI
What? Nein, die drei haben miteinander gar nichts zu tun.
INI ist ein textbasiertes Formet welches Schlüssel=Wert - Paare benutzt um die Daten zu speichern. Diese können in Sektionen gruppiert werden. Ein Baumstruktur ist nicht möglich.
XML ist kein Format sondern eine Auszeichnungs-(meta-)sprache. Das Ding ist ein wahres Monster von dem unzählige Formate wie RSS, SVG, GPX und so weiter ableiten.
JSON ist eigentlich eine Notation für Javascript-Objekte. Tatsächlich sollte jede gültige JSON-Datei gleichzeitig auch gültiges Javascript sein.
INI ist ein textbasiertes Formet welches Schlüssel=Wert - Paare benutzt um die Daten zu speichern. Diese können in Sektionen gruppiert werden. Ein Baumstruktur ist nicht möglich.
XML ist kein Format sondern eine Auszeichnungs-(meta-)sprache. Das Ding ist ein wahres Monster von dem unzählige Formate wie RSS, SVG, GPX und so weiter ableiten.
JSON ist eigentlich eine Notation für Javascript-Objekte. Tatsächlich sollte jede gültige JSON-Datei gleichzeitig auch gültiges Javascript sein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Beispiel RestAPI
Stimmt.
Mmn geht JSON aber schon ziemlich über Javascript hinaus, da es doch eine recht praktische und sparsame Art ist, hierarchische Daten bzw. Objekte zu "serialisieren".
Bevor ich das Rad neu erfinde, nehme ich dann auch gerne JSON, zumal ein Parser ja ziemlich überall (FPC, PHP...) zur Verfügung steht.
Mmn geht JSON aber schon ziemlich über Javascript hinaus, da es doch eine recht praktische und sparsame Art ist, hierarchische Daten bzw. Objekte zu "serialisieren".
Bevor ich das Rad neu erfinde, nehme ich dann auch gerne JSON, zumal ein Parser ja ziemlich überall (FPC, PHP...) zur Verfügung steht.
-
- Beiträge: 6207
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beispiel RestAPI
INI ist immer noch das einfachste, wen man einfache Konfigurations-Dateien braucht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2641
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Beispiel RestAPI
Ja, das sollte jetzt keine Aussage sein, dass man JSON nur in Javascript verwenden sollte. Ich wollte nur die Herkunft der drei gegenüberstellen.
Tatsächlich ist für eine leichtgewichtige API selten etwas besser als JSON. Und auch als dateibasiertes Speicherformat ist es inzwischen unverzichtbar.
Tatsächlich ist für eine leichtgewichtige API selten etwas besser als JSON. Und auch als dateibasiertes Speicherformat ist es inzwischen unverzichtbar.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Beispiel RestAPI
Guten Morgen!
Ich versuche mich gerade das erste mal an der RestAPI. Dazu nutze ich PHTTPClient. Jetzt möchte ich Zugriff auf einen RESTserver haben und das Access-Token erhalten. Wie übergebe ich User und PW nach folgender Beschreibung?
Der User wird eingeloggt und erhält einen gültigen Access-Token.
URL: Die Loginfunktionalität, mit dem die API das Access-Token generiert, wird über folgende URL/Funktion aufgerufen:
Live: https://api.xxxxx.de/api/v2/login
Protokoll: HTTPS
Method: POST
Authentifizierung erforderlich: Nein
Request Parameter:
Keine
Request Payload:
JSON mit den Attributen:
• username: your username
• password: your password
Beispiel: { "username": "your username", "password": "your password" }
Rückgabe:
HTTP-StatusCode: 200 Format: String Content: accessToken
Vielen Dank!
Ich versuche mich gerade das erste mal an der RestAPI. Dazu nutze ich PHTTPClient. Jetzt möchte ich Zugriff auf einen RESTserver haben und das Access-Token erhalten. Wie übergebe ich User und PW nach folgender Beschreibung?
Der User wird eingeloggt und erhält einen gültigen Access-Token.
URL: Die Loginfunktionalität, mit dem die API das Access-Token generiert, wird über folgende URL/Funktion aufgerufen:
Live: https://api.xxxxx.de/api/v2/login
Protokoll: HTTPS
Method: POST
Authentifizierung erforderlich: Nein
Request Parameter:
Keine
Request Payload:
JSON mit den Attributen:
• username: your username
• password: your password
Beispiel: { "username": "your username", "password": "your password" }
Rückgabe:
HTTP-StatusCode: 200 Format: String Content: accessToken
Vielen Dank!
-
- Beiträge: 1912
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Beispiel RestAPI
epos hat geschrieben:Guten Morgen!
Ich versuche mich gerade das erste mal an der RestAPI. Dazu nutze ich PHTTPClient. Jetzt möchte ich Zugriff auf einen RESTserver haben und das Access-Token erhalten. Wie übergebe ich User und PW nach folgender Beschreibung?
Der User wird eingeloggt und erhält einen gültigen Access-Token.
URL: Die Loginfunktionalität, mit dem die API das Access-Token generiert, wird über folgende URL/Funktion aufgerufen:
Live: https://api.xxxxx.de/api/v2/login
Protokoll: HTTPS
Method: POST
Authentifizierung erforderlich: Nein
Request Parameter:
Keine
Request Payload:
JSON mit den Attributen:
• username: your username
• password: your password
Beispiel: { "username": "your username", "password": "your password" }
Rückgabe:
HTTP-StatusCode: 200 Format: String Content: accessToken
Vielen Dank!
Nicht getestet, müsste aber irgendwie so funktionieren:
Code: Alles auswählen
type
ELoginFailedException = class(Exception);
[...]
function Login(User: String; Pass: String): String;
var client: TFPHTTPClient;
json: string;
begin
client := TFPHTTPClient.Create(nil);
try
client.AddHeader('Content-Type', 'application/json');
json := '{"username": "%s", "password": "%s"}'.Format([User, Pass]);
client.RequestBody.Write(json[1], json.Length);
Result := client.Post('https://api.xxxxx.de/api/v2/login');
if client.ResponseStatusCode <> 200 then
raise ELoginFailedException.Create('Wrong login data')
finally
client.Free;
end;
end;