PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → API INSEE (https://api.insee.fr)
API INSEE (https://api.insee.fr)
Débuté par Mg2Fr, 14 nov. 2018 10:59 - 14 réponses
Membre enregistré
44 messages
Posté le 14 novembre 2018 - 10:59
Bonjour à tous,

Je cherche un bout de code pour la mise en place et l'utilisation des API INSEE (https://api.insee.fr) pour vérification du N° de SIRET d'une entreprise. Si quelqu'un aurait cela je serais preneur.

Par avance Merci à tous.
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 14 novembre 2018 - 11:29
Ca a l'air assez simple a première vue (exemple pour les n° de SIREN :

sNumeroSIREN est une chaîne = "TonNumeroAVerifier"
sToken est une chaîne = "TonJeton"

Requete est un restRequête
Requete.URL = "https://api.insee.fr/entreprises/sirene/V3/siren/"+sNumeroSIREN
Requete.Entête["Authorization"] = sToken
Requete.Méthode = "GET"
Reponse est un restRéponse = RESTEnvoie(Requete)
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 14 novembre 2018 - 12:38
Bonjour,

serveur, protocole, cle, secret, token, url_SIRET, SIRET est une chaîne

requete est un restRequête
reponse est un restRéponse
resultat est un Variant

serveur = "api.insee.fr"
protocole = "https://"
url_SIRET = "/entreprises/sirene/V3/siret/"

cle = "" // La clé du consommateur
secret = "" // Le secret du consommateur

token = "" // <- Mettre le token
SIRET = "" // <- Mettre le SIREN

// Récupération d'un nouveau token
//avec requete
// ..URL = protocole + serveur + "/token"
// ..Entête[ "Authorization" ] = "Basic "+ Encode( cle + ":" + secret, encodeBASE64URL )
// ..Méthode = httpPost
// ..Contenu = "grant_type=client_credentials"
// ..AgentUtilisateur = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
// ..ContentType = "application/x-www-form-urlencoded"
//FIN // AVEC requete
//
//reponse = HTTPEnvoie( requete )

AVEC requete

..URL = protocole + serveur + url_SIRET + SIRET
..Méthode = httpGet

..Entête [ "Accept" ] = "application/json"
..Entête[ "Authorization" ] = "Bearer " + token

..IgnoreErreur = httpIgnoreCertificatInvalide + httpIgnoreCertificatExpiré + httpIgnoreNomCertificatInvalide

FIN // AVEC requete

reponse = HTTPEnvoie( requete )
SI ErreurDétectée ALORS

Trace( ErreurInfo( errComplet ) )

SINON

resultat = JSONVersVariant( reponse..Contenu )
Trace( resultat.etablissement.uniteLegale.denominationUniteLegale )

FIN // SI ErreurDétectée ALORS
Membre enregistré
44 messages
Posté le 14 novembre 2018 - 13:39
Bonjour,

Merci pour la réponse, mais c'est le code que j'ai et voici la réponse

Le Token est valide, génération de manière automatique

..Contenu
<am:fault xmlns:am="http://wso2.org/apimanager"><am:code>405</am:code><am:type>Status report</am:type><am:message>Runtime Error</am:message><am:description>Method not allowed for given API resource</am:description></am:fault>

..EnteteBrut
HTTP/1.1 405 Method Not Allowed
X-Cnection: close
X-Forwarded-Proto: https
X-Forwarded-For: 83.201.54.178
Accept-Encoding: deflate, gzip
Content-Type: application/xml; charset=UTF-8
Date: Wed, 14 Nov 2018 12:35:39 GMT
Transfer-Encoding: chunked
Connection: close
Set-Cookie: INSEE=1830169354.22560.0000;secure; expires=Wed, 14-Nov-2018 12:55:39 GMT; path=/
Strict-Transport-Security: max-age=100000; includeSubDomains

Merci pour l'aide.
Membre enregistré
44 messages
Posté le 14 novembre 2018 - 13:54
Bonjour Julien,

Merci pour ton code, il fonctionne à Merveille, j'ai vu ou se trouve mon erreur.
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 14 novembre 2018 - 13:56
L'erreur 405 est un problème de méthode non autorisée

405 (Method Not Allowed)

The API responds with a 405 error to indicate that the client tried to use an HTTP method that the resource does not allow. For instance, a read-only resource could support only GET and HEAD, while a controller resource might allow GET and POST, but not PUT or DELETE.

A 405 response must include the Allow header, which lists the HTTP methods that the resource supports.

Pour la recherche sur SIRET il n'y a que ..Méthode = httpGet qui convienne

Pouvez-vous montrer le code d'appel ?

PS : Je viens de voir votre réponse, tant mieux !!
Message modifié, 14 novembre 2018 - 13:57
Membre enregistré
5 messages
Posté le 26 novembre 2018 - 19:21
Bonsoir à tous,

Je cherche à renouveler mon token. Pour cela je me suis inspiré (pour pas dire recopier) du code de Julien V :


serveur, protocole, cle, secret est une chaîne

requete est un restRequête
reponse est un restRéponse

serveur = "api.insee.fr"
protocole = "https://"

cle = "Zx3oxgxObMLE3Q37IhpoqrtffuIa" // La clé du consommateur
secret = "r0qZ8LZ7sYF2CgHPp3Rf2HQRG4oa" // Le secret du consommateur


// Récupération d'un nouveau token
AVEC requete
..URL = protocole + serveur + "/token"
..Entête[ "Authorization" ] = "Basic "+ Encode( cle + ":" + secret, encodeBASE64URL )
..Méthode = httpPost
..Contenu = "grant_type=client_credentials"
..AgentUtilisateur = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
..ContentType = "application/x-www-form-urlencoded"
FIN // AVEC requete

reponse = HTTPEnvoie(requete)


Mais la seule réponse que j'obtiens est :

{"error_description":"Error in getting oauth app state.","error":"server_error"}

HTTP/1.1 404 Not Found
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Set-Cookie: INSEE=1863723786.58148.0000;secure; expires=Mon, 26-Nov-2018 18:30:44 GMT; path=/
X-XSS-Protection: 1; mode=block
Content-Type: application/json
Date: Mon, 26 Nov 2018 18:10:44 GMT
Transfer-Encoding: chunked
Connection: close
Set-Cookie: INSEE=1846946570.22560.0000;secure; expires=Mon, 26-Nov-2018 18:30:44 GMT; path=/
Strict-Transport-Security: max-age=100000; includeSubDomains




Qu'est-ce que je loupe ?
D'avance, vraiment, merci …
Membre enregistré
44 messages
Posté le 27 novembre 2018 - 09:28
Bonjour Cyril,

Essaye en mettant le token dans une chaine et fait le test pour interroger un Siret ou Siren et regarde ce qu'il se passe.
Membre enregistré
5 messages
Posté le 27 novembre 2018 - 13:33
Bonjour,

Merci Mg2Fr.
Je n'ai pas de problème avec la récupération des données SIRET. Cela fonctionne.
Je cherche juste à renouveler mon TOKEN.


D'avance merci …
Membre enregistré
44 messages
Posté le 27 novembre 2018 - 14:14
Re,

Essaye de désactiver la ligne ..AgentUtilisateur
Membre enregistré
5 messages
Posté le 27 novembre 2018 - 15:29
Merci de ton aide … hélas c'est pareil !
J'ai regardé la doc sur le site api.siren et je n'ai rien trouvé la dessus.
Sur quoi te bases tu ?
Membre enregistré
44 messages
Posté le 27 novembre 2018 - 16:09
J'ai simplement repris le code en l’état de Julien avec modification code + mot de passe et ça à fonctionner de suite.
Moi j'ai un autre soucis, tout fonctionne sur le poste de développement mais pas sur le poste client, quand je renouvelle le Token, chaine vide en retour sans aucun message d'erreur pour trouver l'anomalie, j'ai envoyé un email a API Sirene. J'attends le retour de leur part.

Essaye de renouveler le token sur le site API Sirene et de refaire les essais en ayant un nouveau token
Membre enregistré
44 messages
Posté le 27 novembre 2018 - 16:11
Question stupide,

Ta clé et code secret sont bons ?
Membre enregistré
5 messages
Posté le 27 novembre 2018 - 16:23
Bon bah j'ai fini par trouvé.
L'encodage par défaut de mon projet est en unicode … en le passant en ANSI cela fonctionne.
Membre enregistré
44 messages
Posté le 28 novembre 2018 - 08:43
Bonjour Cyril

Comme me disait toujours mon professeur et cela s'est toujours vérifier, cherche l'erreur le plus bête.

Regarde si ton code fonctionne avec le retour d'information sur les postes clients car de mon coté ça fonctionne a merveille sur le poste développement par retour token vide sans erreur.