Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   RESTClient mit SSL (https://www.delphipraxis.net/215143-restclient-mit-ssl.html)

NLan 16. Mai 2024 11:20


RESTClient mit SSL
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich muss via REST einen WebService anzusprechen. Ich habe schon SMTP, FTP und alles mögliche mit Delphi verwendet, aber die TRESTClient-Componenten sind undurchsichtig. Mit Hilfe von mehren Beiträgen aus den Foren hier, habe ich Folgendes gebaut und nun eine neue Fehlermeldung.

Ich muss z.B. diese Anforderung erzeugen:

curl --request POST \
--url https://abc.def.de/rest/logon/user \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"clientName": "APITEST",
"userName": "APITEST1",
"password": "APITEST2",
"localeName": "en",
"isExternalLogon": "true"
}'

Die libeay32.DLL und ssleay32.DLL fürs SSL habe ich im Programmpfad liegen.

Woran könnte der Fehler "HTTP 415 Unsupported Media Type" liegen ?

Uwe Raabe 16. Mai 2024 11:46

AW: RESTClient mit SSL
 
TRESTClient verwendet die Systemfunktionen für SSL, daher sind die OpenSLL DLLs nicht notwendig.

Bei deinem Beispiel gibt es allerdings einen Unterschied bei den URLs - ich gehe mal von einem Tippfehler aus, da die URL ja offenbar nicht real ist.

Bezüglich des HTTP-Fehlers: Gib doch bitte beim AddBody als zweiten Parameter mal den korrekten ContentType an.

Blup 16. Mai 2024 11:52

AW: RESTClient mit SSL
 
Wahrscheinlich wurde von dir Content-Type oder Content-Encoding nicht oder nicht richtig angegeben.
Der Fehler kann auch auftreten wenn der Server den Content selbst analysiert und damit nicht zufrieden ist.

Kas Ob. 16. Mai 2024 11:59

AW: RESTClient mit SSL
 
JSON in its standardized format doesn't have line beaks or spaces outside names and values ("").

While HTTP 415 is telling you the media or in this case the payload unrecognized format, so most likely and i am guessing here, Memo1.Text does have a valid JSON but not formatted correctly like it is beautified just like the your data content above or written over multiline, meaning you need to compact it also make sure it is trimmed before sending.

NLan 16. Mai 2024 12:01

AW: RESTClient mit SSL
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1536750)
TRESTClient verwendet die Systemfunktionen für SSL, daher sind die OpenSLL DLLs nicht notwendig.

Bei deinem Beispiel gibt es allerdings einen Unterschied bei den URLs - ich gehe mal von einem Tippfehler aus, da die URL ja offenbar nicht real ist.

Bezüglich des HTTP-Fehlers: Gib doch bitte beim AddBody als zweiten Parameter mal den korrekten ContentType an.

=> JA - mit dem korrekten ContentType funktioniert es :-) DANKE

NLan 16. Mai 2024 12:20

AW: RESTClient mit SSL
 
Für die Übergabe von Daten muß ich jetzt in den HTTP-Header folgende Anweisung einfügen:

Authorization: Basic 12345678901234567890=

Mit ...

Request.Params.AddItem('Authorization','Basic 12345678901234567890=', TRESTRequestParameterKind.pkREQUESTBODY, [], TRESTContentType.ctAPPLICATION_JSON);

kommt wieder HTTP-Fehler 415.
Hab noch bissel probiert, damit geht es ...

Request.Params.AddItem('Authorization','Basic 12345678901234567890=', pkHTTPHEADER, [], ctAPPLICATION_JSON);

aber es kommt => {"errorMessage":"Authentication required"}

Wie mache ich das korrekt?

Uwe Raabe 16. Mai 2024 12:44

AW: RESTClient mit SSL
 
Delphi-Quellcode:
  Request.AddAuthParameter(HTTP_HEADERFIELD_AUTH, 'Basic 12345678901234567890=', TRESTRequestParameterKind.pkHTTPHEADER, [TRESTRequestParameterOption.poDoNotEncode]);

NLan 16. Mai 2024 13:21

AW: RESTClient mit SSL
 
Spitze :-D auch das hat funktioniert.
Und ich habe meine ersten Daten per WEB-Service übertragen und das nach 38 Jahren Programmierung (Turbo-Pascal .. Delphi5 .. Delphi10) Vielen DANK !!!

PS: Ich mußte HTTP_HEADERFIELD_AUTH durch 'Authorization' ersetzen, das kannte mein Delphi10 nicht.

Union 16. Mai 2024 16:32

AW: RESTClient mit SSL
 
Jetzt fehlt nur noch, die Response auszuwerten - vermutlich wird irgend ein Zugriffstoken zurückgegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz