Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   "GetSimpleValue" ist in meinem Delphi nicht vorhanden (https://www.delphipraxis.net/212055-getsimplevalue-ist-meinem-delphi-nicht-vorhanden.html)

erich.wanker 9. Dez 2022 14:25

"GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Hallo,

ich suche eine Möglichkeit folgende Zeile für Delphi 10.4 zu "übersetzen"

token := GetSimpleValue(Lresponse.ContentAsString, 'access_token');


Ich habe ein Stk Sourcecode in einem Forum gefunden (ich vermute Delphi 11.2?), das ich gerne für Delphi 10.4 verwenden möchte..

token: String;
Lresponse: IHttpResponse;
Inhalt von Lresponse := http.Post ('https://login.microsoftonline.com/organizations/oauth2/v2.0/token', params);

Kann mir da jemand helfen?

LiGrü
Erich

DeddyH 9. Dez 2022 14:40

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Was steht denn in Lresponse.ContentAsString drin? Ich vermute, das ist ein JSON-Objekt.

[edit] Ich habe mal kurz recherchiert: https://docwiki.embarcadero.com/Libr...GetSimpleValue Das kannte ich zwar auch nicht, aber das scheint es schon etwas länger zu geben. [/edit]

haentschman 9. Dez 2022 14:47

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Moin...8-)

https://docwiki.embarcadero.com/Libr...GetSimpleValue

Kategorien: API-Dokumentation XE5

...ich tippe auf fehlende uses. :P

erich.wanker 9. Dez 2022 14:56

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Hallo und Danke erstmal :-)

wenn ich

token := REST.Client.TCustomRESTResponse.GetSimpleValue(Lre sponse.ContentAsString, 'access_token');

verwende - bekomme ich den Fehler:

[dcc32 Fehler] Login.pas(180): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden

Hmm.. der Response ist ja kein Konstantenobjekt?

DeddyH 9. Dez 2022 14:59

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Der Aufruf passt ja auch nicht zu den in der Doku angegebenen Argumenten. Wie ist es denn so?
Delphi-Quellcode:
if not LResponse.GetSimpleValue('access_token', token) then
  ShowMessage('Oops');

himitsu 9. Dez 2022 15:00

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
allerdings bissl anders

Wenn da sich kein WITH verstekt, scheint das eine Funktion und keine Methode zu sein.
Zitat:

Delphi-Quellcode:
token_DieVariable := GetSimpleValue(Lresponse.ContentAsString, 'access_token')

Delphi-Quellcode:
LResponse_DerContentIstHierVorneDrin.GetSimpleValue('access_token', VariableFürDenRausgeholtenToken)

erich.wanker 9. Dez 2022 15:08

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Liste der Anhänge anzeigen (Anzahl: 1)
irgendwie geht das bei mir nicht ..

wenn ich REST.Client.GetSimpleValue( schreibe kennt er den befehl nicht

wenn ich REST.Client.TCustomRESTResponse.GetSimpleValue( dann schon

if not LResponse.GetSimpleValue('access_token', token) then
ShowMessage('Oops'); geht auch nicht


.. die REST.Client hab ich in uses:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses,
uniGUIClasses, uniGUIForm, uniGUIBaseClasses, uniButton, REST.Types,
REST.utils, System.Net.URLClient,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, REST.Response.Adapter,
System.json,
REST.Client, Data.Bind.Components, Data.Bind.ObjectScope, uniPanel, uniLabel,
System.Net.HttpClient, System.Net.HttpClientComponent,
uniEdit, REST.Authenticator.OAuth, uniMemo;

DeddyH 9. Dez 2022 15:13

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Mir ist nicht klar, wieso da mehrere Bibliotheken durcheinandergewürfelt werden. Wieso nimmst Du nicht einfach einen TRestClient und einen TRestRequest, die kann man ja als Komponenten einfach aufs Formular klatschen?

himitsu 9. Dez 2022 15:29

AW: "GetSimpleValue" ist in meinem Delphi nicht vorhanden
 
Und Ansonsten macht diese Methode garnichts Hochkompliziertes und man kann es auch selbst machen.

Es nimmt die Rückgabe (Response.ContentString) als ContentType text/html bzw. text/plain (eigentlich application/x-www-form-urlencoded, aber genau das nicht) oder eben application/json entgegen
und holt dort einen Wert raus, also

Name1=Value1&Name2=Value2&Name3=Value3&...
(URL-kodierte Formular-Daten)

oder eben

{"Name1":"Value1","Name2":"Value2","Name3":"Value3",...}
(einen Wert aus der ersten Ebene eines JSON-Objekts)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 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