API oproepen met FME

We maken gebruik van fixi als meldingenapplicatie van Decos. We hebben een report api ontvangen, waarmee we data(sets) kunnen uitlezen om te verwerken in het datawarehouse. Nu heb ik met FME wel eens scripts gemaakt om opendatasets uit te lezen, maar op één of andere manier lukt het me niet met deze report api.
Ik heb een customer ID, een API key en een API Secret gekregen. Als ik het goed begrijp dan levert deze set een acces-token en een refreshtoken. Deze tokens kan je verder gebruiken om de data uit te lezen.

Nu lukt het me niet in FME om de access- en refresh-token te krijgen en kom ik dus ook niet verder. Heeft iemand een idee hoe dit in FME opgelost kan worden?

Ja, met de HTTPCaller is dat niet zo lastig. Beetje onhandig, maar goed. Je doet eerst het request om je access-token te krijgen, dat krijg je dan terug als attribuut of file. Attribuut is makkelijker, want dan kun je bij een positieve response (check de http-code enzovoorts) dat attribuut weer gebruiken bij een tweede HTTPCaller. De Refresh-token is alleen nodig als de access-token verlopen is, en die is meestal wel een tijdje geldig - maar dat hangt heel erg van de implementatie af aan de server-zijde (en die ken ik niet).

Ik moet wel iets dergelijks doen voor een andere webservice waar ik gebruik van maak, en dat werkt prima, dus kan je wel verder helpen denk ik.

dank voor je reactie. Ik had ook de HTTPCaller gebruikt, maar krijg het niet voor elkaar. Ik stuur even mee wat de instellingen zijn.


Ik krijg als reactie: HTTP/1.1 400 Bad Request
Fijn dat je me verder wilt helpen.

Hmmm. Als ik de SwaggerUI van die url eens bekijk, lijkt het er op dat de meeste operaties GET zijn ipv POST.
Verder zie ik dat je Multipart-Formdata gebruikt om datgene wat je post aan te geven, ik vraag me af of dat juist is. Maar ik weet niet wat voor documentatie je hebt gekregen, dus misschien klopt het wel. Is de HTTP-400 het enige antwoord dat je krijgt? of zit er ook nog iets in de _response_body?

Hebben ze je ook documentatie gegeven? Daar staat meestal wel een voorbeeld in…

Documentatie die ik heb gekregen is heel summier. Via Postman krijg ik met een POST operatie wel reactie en krijg ik access en request roken terug.

Dan is het een kwestie van zoek de verschillen. Blijkbaar doet Postman iets anders dan wat je FME laat doen. Cookies aanzetten helpt misschien. Ik heb geen Postman, ken dat ook niet dus ik weet niet hoe je kunt zien wat daar gebeurd. Probeer je HTTPCaller net zo in te richten als Postman.

Overigens: welke versie van FME gebruik je?
Verder denk ik dat je mime-type niet goed is, en of het een POST moet zijn of een GET (of iets anders) zou ik ook zo niet durven zeggen. Probeer daar eens mee te spelen. Wat zegt FME zelf in z’n log, en in de _response_body?

Edit: als ik naar die url ga, krijg ik wel een json terug, dus vermoedelijk zit er wel iets in je _response_body. Misschien vertelt dat je meer.

Het is gelukt, FME ging niet goed om met het encoderen van de api_key en api_secret. Door een textencoder toe te passen ging het goed.

1 like

FME doet dat alleen maar omdat je dat zelf tegen FME zegt:
image
Het leek me al niet juist dat je form-urlencoded gebruikt voor zoiets als dit, ik denk dat je de Content-Type moet aanpassen in plaats van een TextEncoder er voor zetten. Maar dit is wel iets dat in je documentatie zou moeten staan. Want nu encode je de keys, en FME doet 't dan vervolgens nog een keer. Dat is niet nodig.

Dit topic is 180 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.