Domů
Nápověda
Přihlásit
Registrovat
Vítejte
Host
. Prosím
přihlašte se
nebo
zaregistrujte
.
Forum Delphi.cz
»
Delphi
»
Obecné
»
Požadavek na získání tokenu na EGD distribuci
« předchozí
další »
Tisk
Stran: [
1
]
Dolů
Autor
Téma: Požadavek na získání tokenu na EGD distribuci (Přečteno 779 krát)
Jirka
Guru
Příspěvků: 502
Karma: 9
Verze Delphi: XE2
Požadavek na získání tokenu na EGD distribuci
«
kdy:
29-01-2025, 18:15:30 »
Ahoj
Nelze mi z Delphi XE2 pomocí synapse načíst data z openAPI EGD distribuce
Vrací to 403 Forbidden
Dokumentace
https://portal.distribuce24.cz/download ... penApi.pdf
Mohl by to někdo prosím vyzkoušet ?
Díky
Metoda POST
url https://idm.distribuce24.cz/oauth/token
Body {
"grant_type": "client_credentials",
"client_id": "02e7953491dbb3d55dab6abb5e8629cc",
"client_secret": "c5dfef83e23ca07d56e51e83ede8df1a",
"scope": "namerena_data_openapi"
}
přes Online služby
https://reqbin.com/post-online
to je OK
Kód: Delphi
[Vybrat]
MemoPripravenaZprava
.
Lines
.
text
:
=
ZpravaKPrevodu
;
AStream
:
=
TMemoryStream
.
Create
;
MemoPripravenaZprava
.
Lines
.
SaveToStream
(
AStream
)
;
WorkUrl
:
=
'https://idm.distribuce24.cz/oauth/token'
;
HTTP
:
=
THTTPSend
.
Create
;
try
// HTTP.Headers.Clear;
// HTTP.Headers.Add('User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0');
// HTTP.Headers.Add('Accept-Encoding: deflate, gzip');
// HTTP.Headers.Add('Host: idm.distribuce24.cz');
// HTTP.Headers.Add('Content-Type: application/json');
// HTTP.Headers.Add('Accept: */*');
HTTP
.
Document
.
LoadFromStream
(
AStream
)
;
Vysledek
:
=
HTTP
.
HTTPMethod
(
'POST'
,
WorkUrl
)
;
memo1
.
Lines
.
Text
:
=
HTTP
.
Headers
.
Text
;
memo2
.
Lines
.
Text
:
=
IntToStr
(
HTTP
.
ResultCode
)
;
MemoVystupResponse
.
Lines
.
LoadFromStream
(
HTTP
.
Document
)
;
if
Vysledek
then
begin
Caption
:
=
'OK'
;
end
;
IP zaznamenána
< z >
Administrátoři
Guru
Příspěvků: 1209
Karma: 44
Verze Delphi: 7, 2010
Re:Požadavek na získání tokenu na EGD distribuci
«
Odpověď #1 kdy:
30-01-2025, 20:55:28 »
Content-Type: application/json
IP zaznamenána
Jirka
Guru
Příspěvků: 502
Karma: 9
Verze Delphi: XE2
Re:Požadavek na získání tokenu na EGD distribuci
«
Odpověď #2 kdy:
30-01-2025, 21:11:59 »
Citace: < z > 30-01-2025, 20:55:28
Content-Type: application/json
Pořád to nejde , pokud to doplním do hlavičky
Kód: Delphi
[Vybrat]
HTTP
.
Headers
.
Add
(
'Content-Type: application/json'
)
;
tak se mi vrátí
Kód: Delphi
[Vybrat]
{"error":"invalid_request","message":"nevalidni vstupni data: invalid_request"}
pokud nechám hlavičky prázdné tak se mi vrátí toto:
Kód: Delphi
[Vybrat]
<html>
<head><title>
403
Forbidden<
/
title><
/
head>
<body>
<center><h1>
403
Forbidden<
/
h1><
/
center>
<hr><center>Microsoft
-
Azure
-
Application
-
Gateway
/
v2<
/
center>
<
/
body>
<
/
html>
Zkoušel jsem to poslat pomocí aplikaci v C# a taky bez problémů.
Moc by mi pomohlo kdyby to někdo vyzkoušel poslat pomocí synapse
IP zaznamenána
< z >
Administrátoři
Guru
Příspěvků: 1209
Karma: 44
Verze Delphi: 7, 2010
Re:Požadavek na získání tokenu na EGD distribuci
«
Odpověď #3 kdy:
30-01-2025, 21:49:42 »
Používám Indy, takže moc nepomůžu, ale tipoval bych, že se špatně pošle hlavička.
Content-Type je standardní hlavička, která tam standardně je. Přidáním přes Headers tam bude asi 2x.
Co třeba toto?
HTTP.MimeType := 'application/json'
IP zaznamenána
Jirka
Guru
Příspěvků: 502
Karma: 9
Verze Delphi: XE2
Re:Požadavek na získání tokenu na EGD distribuci
«
Odpověď #4 kdy:
02-02-2025, 13:31:44 »
Tak jsem to nakonec vzdal a udělal jsem si DLL v C# a to volám z Delphi přes Host := TJclClrHost.Create('v4.0.30319');
IP zaznamenána
< z >
Administrátoři
Guru
Příspěvků: 1209
Karma: 44
Verze Delphi: 7, 2010
Re:Požadavek na získání tokenu na EGD distribuci
«
Odpověď #5 kdy:
02-02-2025, 14:05:53 »
Ale určitě to funguje
Kód: Delphi
[Vybrat]
var
sList
:
TStringList
;
sData
:
TStringStream
;
HTTP
:
THTTPSend
;
begin
HTTP
:
=
THTTPSend
.
Create
;
sList
:
=
TStringList
.
Create
;
sData
:
=
TStringStream
.
Create
(
'{"grant_type": "client_c...'
)
;
try
HTTP
.
MimeType
:
=
'application/json'
;
HTTP
.
Document
.
LoadFromStream
(
sData
)
;
if
HTTP
.
HTTPMethod
(
'POST'
,
'https://idm.distribuce24.cz/oauth/token'
)
then
sList
.
LoadFromStream
(
HTTP
.
Document
)
;
ShowMessage
(
sList
.
Text
)
;
finally
sList
.
Free
;
HTTP
.
Free
;
end
;
end
;
IP zaznamenána
Jirka
Guru
Příspěvků: 502
Karma: 9
Verze Delphi: XE2
Re:Požadavek na získání tokenu na EGD distribuci
«
Odpověď #6 kdy:
03-02-2025, 10:35:56 »
Tak po aktualizaci Synapse, Opensll a přidání HTTP.MimeType := 'application/json';
se to rozběhlo
Díky za pomoc
IP zaznamenána
Tisk
Stran: [
1
]
Nahoru
« předchozí
další »
Forum Delphi.cz
»
Delphi
»
Obecné
»
Požadavek na získání tokenu na EGD distribuci