|
| API Get Search Address Avec restRequête |
| Iniciado por Dokko5pics, 10,mar. 2020 17:36 - 5 respuestas |
| |
| | | |
|
| |
Miembro registrado 10 mensajes |
|
| Publicado el 10,marzo 2020 - 17:36 |
Bonjour à tous,
J'ai une clef azure pour l'api citée que j'ai testé avec Postman qui fonctionne très bien.
Mai lorsque je décide de tester via les codes windev suivant :
Sablier() cMaRequete est un restRequête cMaRequete..Méthode = httpGet cMaRequete..URL = "https://atlas.microsoft.com/search/address/json?" cMaRequete..Entête["Autorisation"]= "No Auth" cMaRequete..Entête["api-version"] =1.0 cMaRequete..Entête["subscription-key"] ="ma clef" cMaRequete..Entête["query"] ="400 Broad St, Seattle, WA 98109"
Trace("envoie de la requête ") cMaReponse est un restRéponse = RESTEnvoie(cMaRequete)
SI ErreurDétectée ALORS Erreur(ErreurInfo(errComplet)) SINON SI cMaReponse..Contenu = Vrai ALORS Info("API réussi.") SINON Erreur(cMaReponse..Contenu) FIN FIN Sablier(Faux)
Bien évidement je met la bonne clef dans mon code. J'obtiens l'erreur suivant :
{"error":{"code":"400 BadRequest","message":"An API version is required, but was not specified"}}
Est ce que peut m'aider dans ce qui ne veut pas dans le code s'il vous plait?
Merci beaucoup d'avance, |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 948 mensajes |
|
| Publicado el 10,marzo 2020 - 17:53 |
Bonjour Avez-vous essayé avec cMaRequete..Entête["api-version"] = "1.0"
-- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. Quand un utilisateur vous a aidé, n'oubliez pas de le remercier... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
| Publicado el 10,marzo 2020 - 18:06 |
Bonjour Philippe,
Je viens d'essayer mais toujours le même message d'erreur. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,marzo 2020 - 19:09 |
Bonjour,
A la lecture se l'API que vous voulez les paramètres demandés sont de type query c'est à dire que vous devez les placer dans l'adresse de la demande et non dans l'entête (header).
Il faut donc utiliser une syntaxe de ce style :
cMaRequete est un restRequête cMaRequete..Méthode = httpGet cMaRequete..URL = "https://atlas.microsoft.com/search/address/json?api-version=1.0&subscription-key=maclef&..."
Attention toutefois pour le paramètre query il faudra penser à l'encoder via la fonction urlencode.
la chaîne constituée peux être essayé directement avec un navigateur. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
| Publicado el 11,marzo 2020 - 07:23 |
Bonjour,
Franck, effectivement, lorsque j'utilise Postman et que je prend ensuite l'url (donné dans postman) et que je colle dans firefox, j'obtiens la réponse comme celle donnée dans Postman.
J'ai modifié mon programme ci-dessous en fonction de tes conseils ci-dessus :
Sablier() sVersionapi, sLaclef, squery, sMonurl sont des chaînes sVersionapi="1.0" sLaclef="maclef" squery="400 Broad St, Seattle, WA 98109" sMonurl="https://atlas.microsoft.com/search/address/json?" cMaRequete est un restRequête cMaRequete..Méthode = httpGet cMaRequete..URL=URLEncode(sMonurl+"api-version="+sVersionapi+"&subscription-key="+sLaclef+"&query="+squery) Trace(cMaRequete..URL) cMaRequete..Entête["Autorisation"]= "No Auth" cMaRequete..Entête["Media Types"] ="application/json" Trace("envoie de la requête ") cMaReponse est un restRéponse = RESTEnvoie(cMaRequete)
SI ErreurDétectée ALORS Erreur(ErreurInfo(errComplet)) SINON Trace(cMaReponse..Contenu) FIN Sablier(Faux)
Dans la trace je je fais un copier-coller de l'adresse retourner par le programme dans firefox et le résultat est correct. L'adresse est bonne.
Par contre, à l'étape Trace(cMaReponse..Contenu) qui affiche le message d'erreur suivant :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"><\r><\n><HTML><HEAD><TITLE>Bad Request</TITLE><\r><\n><META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD><\r><\n><BODY><h2>Bad Request - Invalid Header</h2><\r><\n><hr><p>HTTP Error 400. The request has an invalid header name.</p><\r><\n></BODY></HTML><\r><\n>
Alors que normalement je devrais avoir une réponse comme lorsque je colle l'url dans firefox qui me donne bien une réponse au format json.
Avez-vous une idée de ce qui pose problème?
Merci par avance |
| |
| |
| | | |
|
| | |
| |
| Publicado el 11,marzo 2020 - 17:05 |
Bonjour,
en HTTP le mot clé "Media Types" n'existe pas il faut remplacer par :
cMaRequete..Entête["Content-Type"] ="application/json"
De plus le mot clé "Autorisation" n'existe pas non plus il faut utiliser le mot clé est "Authorization" mais dans votre cas il ne faut pas le préciser, si vous n'avez pas eu de demande de mot de passe lorsque vous avez essayer sous firefox.
De plus comme la requête est simple elle peux être appelé avec la fonction HTTPEnvoie(UrlFirefox) plutôt qu'avec les fonction rest...
Cordialement, Franck. |
| |
| |
| | | |
|
| | | | |
| | |
|