Am crezut ca autorizarea cu tok JWT nu va ridica probleme si va functiona pe acelasi suport ca tokenul opac. Se pare ca lucrurile nu stau asa. Dimensiunea exagerata a sirului (1690 chr) face ca parametrizarea in fox si chiar si in alte limbaje sa aiba probeme. Eu de exemplu utilizez un fisier BAT parametrizat cand transmit factura. Cu token opac faceam asa :
run /n7 fe_post.bat &p1,&p2,&p3,&p4
unde parametrii erau :
p1=CUI
P2=bearer
p3=fisier de trimis
p4=fisier raspuns
iar Fisierul bat atara asa
echo off
set arg1 = %1
set arg2 = %2
set arg3 = %3
set arg4 = %4
curl.exe --request POST "https://api.anaf.ro/test/FCTEL/rest/upl ... UBL&cif=%1" ^
-H "Authorization: Bearer %2" ^
-H "content-type: text/plain" ^
--data-binary @%3 ^
-o %4
Problema este ca ceea ce functiona bine cu token opac, nu mai functioneaza cu token JWT deoarece s-ar obtine o linie de comanda care are o lungime ce depaseste limita acceptata de fox.
Drept urmare ar trebui sa apelam la functiile API windows.
Eu, ca sa pot sa rezolv cat de cat problema, cu minim de modificari, am nevoie de un raspuns la urmatoarea intrebare :
Cum pot trimite parametrii unui bat file executat cu ShellExecute() ?? MrApi a oferit o solutie, respectiv renuntarea la parametrizare si editarea la fiecare interogare a unui bat file cu parametrii inclusi, solutie pe care o pastrez ca solutie de salvare daca-mi prind urechile in parametrii.
_ows= Createobject('WScript.Shell')
_ows.Run('&fe_post.bat',1,.T.)
unde fe_post.bat este fisierul bat.
O alta solutie ar fi aceea de a transmite ShellExecute, parametrii ceea ce ar evita editarea unui bat-file la fiecare interogare. Eu banuiesc cum ar trebui sa arate dar nu stiu nicio sintaxa.
As dori sa purtam aceasta discutie cat de repede pentru ca timpul trece
Autorizarea cu TOKEN JWT
Forum rules
:: limbajul folosit in acest forum va fi unul civilizat, in limita subiectelor din topicurile deschise.
:: orice manifestare necivilizata (agresiune verbala, comportament neadecvat, reclama abuziva fara legatura cu forumul) va duce la stergerea contului de user.
:: pt. inscriere USER NOU la acest FORUM, folositi linkul https://profox.ro/forum-register/
:: limbajul folosit in acest forum va fi unul civilizat, in limita subiectelor din topicurile deschise.
:: orice manifestare necivilizata (agresiune verbala, comportament neadecvat, reclama abuziva fara legatura cu forumul) va duce la stergerea contului de user.
:: pt. inscriere USER NOU la acest FORUM, folositi linkul https://profox.ro/forum-register/
Re: Autorizarea cu TOKEN JWT
Eu nu folosesc curl, mi-a mers pana acum "normal" (ohttp=createobject(.....) ... si restul).
Dar si eu as merge pe varianta cu bat-ul "construit" complet. Mi se pare mai clar si mai simplu chiar. Un simplu strtofile() si ai rezolvat minunea!
Cat despre shell, trebuie trecuta linia de comanda cu tot cu parametri :
_ows.Run('linie comanda completa cu toti parametrii',1,.T.)
Dar si eu as merge pe varianta cu bat-ul "construit" complet. Mi se pare mai clar si mai simplu chiar. Un simplu strtofile() si ai rezolvat minunea!
Cat despre shell, trebuie trecuta linia de comanda cu tot cu parametri :
_ows.Run('linie comanda completa cu toti parametrii',1,.T.)
Re: Autorizarea cu TOKEN JWT
Pentru ca ai intrebat de bat cu parametrii in win. Si ca vrei sa folosesti ce deja functioneaza, incerc sa raspund la subiect.
Sunt programator de C++, dar am folosit si eu la un moment dat un bat cu parametrii transmisi si numai probleme am avut. Mai ales de la UAC si lansari de pe diskuri mapate de retea si drepturi. Clar nu a fost cea mai buna solutie pentru mine.
Cand nu exista validator online, mi s-a parut interesant sa validez xml de efactura cu duk lansat astfel validare.bat
set arg1=%1
set arg2=%2
set arg3=%3
java -jar %arg1% -v FACT1 %arg2% %arg3%
Nu-mi place ShellExecute, folosesc CreateProcess
UnicodeString PARAM;
PARAM = CALE_EXE + "\\validare.bat " + (DM->CALE_JAR) + " " + (CALE_XML_GENERAT) + " " + (DM->CALE_FXML + "fis_rez.txt");
....
res = CreateProcess(NULL, PARAM.c_str(), NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, CALE_EXE.c_str(), &StartupInfo, &ProcesInfo);
if (res)
WaitForSingleObject(ProcesInfo.hProcess, INFINITE);
La unii mergea snur, la altii nu se lansa deloc bat, la altii imi dadea UAC un mesaj.
Sunt programator de C++, dar am folosit si eu la un moment dat un bat cu parametrii transmisi si numai probleme am avut. Mai ales de la UAC si lansari de pe diskuri mapate de retea si drepturi. Clar nu a fost cea mai buna solutie pentru mine.
Cand nu exista validator online, mi s-a parut interesant sa validez xml de efactura cu duk lansat astfel validare.bat
set arg1=%1
set arg2=%2
set arg3=%3
java -jar %arg1% -v FACT1 %arg2% %arg3%
Nu-mi place ShellExecute, folosesc CreateProcess
UnicodeString PARAM;
PARAM = CALE_EXE + "\\validare.bat " + (DM->CALE_JAR) + " " + (CALE_XML_GENERAT) + " " + (DM->CALE_FXML + "fis_rez.txt");
....
res = CreateProcess(NULL, PARAM.c_str(), NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, CALE_EXE.c_str(), &StartupInfo, &ProcesInfo);
if (res)
WaitForSingleObject(ProcesInfo.hProcess, INFINITE);
La unii mergea snur, la altii nu se lansa deloc bat, la altii imi dadea UAC un mesaj.
-
viorel1955
- Posts: 350
- Joined: 01 Jun 2022, 11:46
Re: Autorizarea cu TOKEN JWT
@mgabi da, e o solutie dar nu stiu de ce, ma zgaraie pe creier. Mi se pare "muncitoreasca". Am un defect profesional inca din tinerete, tin la estetica codului. Pana la urma probabil, ma voi alinia plutonului, daca nu reusesc sa inventez ceva mai "fin". Am ales solutia si combinatia curl - bat file, tocmai ca sa separ codul program, de codul de interfata cu serverul extern, de maniera sa nu umblu si sa compilez toata ziua bunaziua codul program .mgabi wrote: ↑02 Apr 2024, 21:38 Eu nu folosesc curl, mi-a mers pana acum "normal" (ohttp=createobject(.....) ... si restul).
Dar si eu as merge pe varianta cu bat-ul "construit" complet. Mi se pare mai clar si mai simplu chiar. Un simplu strtofile() si ai rezolvat minunea!
Cat despre shell, trebuie trecuta linia de comanda cu tot cu parametri :
_ows.Run('linie comanda completa cu toti parametrii',1,.T.)
Last edited by viorel1955 on 03 Apr 2024, 16:00, edited 1 time in total.
-
viorel1955
- Posts: 350
- Joined: 01 Jun 2022, 11:46
Re: Autorizarea cu TOKEN JWT
Da, ceva de genul. E asemanator cu ce am incercat eu cu ShellExecute(), dar am ratat. O sa fiu atent la sintaxa. E bine totusi ca am aflat de problemele cu UAC. Multumesc Blumache, apreciez.blumache wrote: ↑03 Apr 2024, 08:44 Pentru ca ai intrebat de bat cu parametrii in win. Si ca vrei sa folosesti ce deja functioneaza, incerc sa raspund la subiect.
Sunt programator de C++, dar am folosit si eu la un moment dat un bat cu parametrii transmisi si numai probleme am avut. Mai ales de la UAC si lansari de pe diskuri mapate de retea si drepturi. Clar nu a fost cea mai buna solutie pentru mine.
Cand nu exista validator online, mi s-a parut interesant sa validez xml de efactura cu duk lansat astfel validare.bat
set arg1=%1
set arg2=%2
set arg3=%3
java -jar %arg1% -v FACT1 %arg2% %arg3%
Nu-mi place ShellExecute, folosesc CreateProcess
UnicodeString PARAM;
PARAM = CALE_EXE + "\\validare.bat " + (DM->CALE_JAR) + " " + (CALE_XML_GENERAT) + " " + (DM->CALE_FXML + "fis_rez.txt");
....
res = CreateProcess(NULL, PARAM.c_str(), NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, CALE_EXE.c_str(), &StartupInfo, &ProcesInfo);
if (res)
WaitForSingleObject(ProcesInfo.hProcess, INFINITE);
La unii mergea snur, la altii nu se lansa deloc bat, la altii imi dadea UAC un mesaj.
Re: Autorizarea cu TOKEN JWT
Eu si acum folosesc validatorul si n-am avut nicaieri probleme. Il lansez cu shell (linia de comanda comanda intreaga, in clar).
-
viorel1955
- Posts: 350
- Joined: 01 Jun 2022, 11:46
-
viorel1955
- Posts: 350
- Joined: 01 Jun 2022, 11:46
Re: Autorizarea cu TOKEN JWT
Ma refeream la validarea XML-ului, inainte de transmitere.
Folosesc Duk-ul cam asa:
cmd='java -jar DUKIntegrator.jar -v FACT1 "'+m.fisierxml+'" "'+ m.fisiererr+"' &&& numele fis. cu calea completa
SET DEFAULT TO (m.caleDuk) &&& fara asta aveam probleme pe unele sisteme ... mai ales in retea.
oShell = CreateObject("WScript.Shell")
oShell.Run(cmd, 0, .T.)
Nu m-am deranjat sa modific in ShellExecute
Este posibil totusi sa trec pe varianta online, Duk-ul srontaie cam o secunda la validare si (culmea!) online merge mai repede de multe ori.
Folosesc Duk-ul cam asa:
cmd='java -jar DUKIntegrator.jar -v FACT1 "'+m.fisierxml+'" "'+ m.fisiererr+"' &&& numele fis. cu calea completa
SET DEFAULT TO (m.caleDuk) &&& fara asta aveam probleme pe unele sisteme ... mai ales in retea.
oShell = CreateObject("WScript.Shell")
oShell.Run(cmd, 0, .T.)
Nu m-am deranjat sa modific in ShellExecute
Este posibil totusi sa trec pe varianta online, Duk-ul srontaie cam o secunda la validare si (culmea!) online merge mai repede de multe ori.
-
viorel1955
- Posts: 350
- Joined: 01 Jun 2022, 11:46
Re: Autorizarea cu TOKEN JWT
Am inteles ! Eu nu mai validez nimic. Stiu cam ce trebuie ca sa nu rateze si nu-l las sa o trimita pana nu complecteaza tot. Cred ca am brodit-o dela inceput si nu am avut probleme. Desigur daca nu umbla astia pe la structura.