AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RESTClient mit SSL

Ein Thema von NLan · begonnen am 16. Mai 2024 · letzter Beitrag vom 16. Mai 2024
Antwort Antwort
NLan

Registriert seit: 19. Jul 2023
7 Beiträge
 
Delphi 10.4 Sydney
 
#1

RESTClient mit SSL

  Alt 16. Mai 2024, 12:20
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 ?
Angehängte Dateien
Dateityp: txt Prog1.txt (598 Bytes, 13x aufgerufen)

Geändert von NLan (16. Mai 2024 um 12:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.431 Beiträge
 
Delphi 12 Athens
 
#2

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 12:46
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.463 Beiträge
 
Delphi 12 Athens
 
#3

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 12:52
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.
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
346 Beiträge
 
#4

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 12:59
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.
Kas
  Mit Zitat antworten Zitat
NLan

Registriert seit: 19. Jul 2023
7 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 13:01
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
  Mit Zitat antworten Zitat
NLan

Registriert seit: 19. Jul 2023
7 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 13:20
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?

Geändert von NLan (16. Mai 2024 um 13:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.431 Beiträge
 
Delphi 12 Athens
 
#7

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 13:44
  Request.AddAuthParameter(HTTP_HEADERFIELD_AUTH, 'Basic 12345678901234567890=', TRESTRequestParameterKind.pkHTTPHEADER, [TRESTRequestParameterOption.poDoNotEncode]);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
NLan

Registriert seit: 19. Jul 2023
7 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 14:21
Spitze 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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: RESTClient mit SSL

  Alt 16. Mai 2024, 17:32
Jetzt fehlt nur noch, die Response auszuwerten - vermutlich wird irgend ein Zugriffstoken zurückgegeben.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz