Récupérer un token avec RESTTool

Bonjour,

J’ai une API REST que je veux utiliser directement dans le code java.
J’ai lu la documentation (javadoc) de la classe RESTTool, et je n’arrive pas à récupérer le token bearer (erreur 400 bad request à chaque fois).

Pourtant l’URL est la bonne. Donc la seule solution c’est que le body soit faux.
J’ai seulement ses 3 informations à renseigner :

  • client_id → info1
  • client_secret → info2
  • grant_type → info3

Pourriez-vous m’aidez à trouver la syntaxe exacte du POST à effectuer pour récupérer le token ?

Sachant que lorsqu’on utilise l’API sous AZURE, tout fonctionne. Voici la configuration :

image

Quel est votre code ?
Sans ça je ne vois pas comment on peut vous aider.

Voici le code :

Je crois que c’est la même configuration que la capture d’écran AZURE du premier poste.

Il faudrait déjà commencer par remplacer le e.printStacktrace() par AppLog.error(null, e, getGrant()) pour que l’exception (s’il y en a une) remonte correctement dans les logs

Ensuite le pb est sans doute que sans content type explicite RESTTool utilise, par défaut, un content type JSON, donc dans votre cas je pense qu’il faut appeler cette variante de post: RESTTool

Avec l’argument mime valant HTTPTool.MIME_TYPE_FORM = application/x-www-form-urlencoded

PS: si la classe helper RESTTool ne correspond pas à vos besoin vous pouvez utiliser d’autres libs d’appel HTTP plus bas niveau intégrées dans Simplicité, typiquement Apache HTTPClient ou UniREST

1 Like

J’ai rajouté application/x-www-form-urlencoded dans ma requête et j’obtient une nouvelle erreur HTTP 401 Unauthorized.

.

Voici le code :

Peut être en utilisant une Map<String, String> au lieu d’un String pour le body. A la base RESTTool est plutôt été conçu pour les échanges REST avec bodies JSON. Ce n’est peut être juste pas adapté dans votre cas.

Si vous ne vous en sortez pas avec RESTTool, essayez par exemple avec la lib UniREST qui est beaucoup plus flexible. cf. Documentation - Unirest in Java: Simplified, lightweight HTTP client library.

Merci pour l’aide, en fait, il s’agissait bien de 2 problèmes :

  • Le client_secret n’était pas le bon
  • Il fallait comme vous l’avez dit rajouter explicitement le application/x-www-form-urlencoded

Oui 401 c’est en général un pb d’identification et 400 un pb de format de requête (ex: pas le content type attendu, ou format du body incohérent avec le content type déclaré, etc.)

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.