PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → API  - Requête HTTPRequête
API - Requête HTTPRequête
Débuté par Mel, 02 juin 2017 11:09 - 6 réponses
Posté le 02 juin 2017 - 11:09
Bonjour,

Je souhaite lancer une API qui envois des informations sur le serveur, donc sur une base SQL.

Je lance l'API à partir de HTTPRequête, mais ça ne marche pas. le problème vient d'une erreur de formatage URL.
Mais ce ne voit pas où vient l'erreur.


ch_url = "http://site.fr/api/update/sodis/{""IdentityValue"":'9789461612113',""Weight"":718,""Height"":260,""Width"":190,""Thickness"":15,""CodeStockDilicom"":06,""StockSodis"":0}"

SI HTTPRequête(ch_url,"","","","application/json")=Vrai ALORS
sIpPublique=HTTPDonneRésultat()
trace(sIpPublique)
FIN

Erreur obtenu : Résultat obtenu : <!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</h2><\r><\n><hr><p>HTTP Error 400. The request is badly formed.</p><\r><\n></BODY></HTML><\r><\n>


Merci d'avance pour votre aide
Posté le 13 juin 2017 - 14:18
Bonjour,

Je n'arrive pas à trouver de solutions.

Si une personne a une idée, je suis preneuse.


Je reste disponible pour toutes questions.

Merci d'avance de votre aide.


MEL
Posté le 13 juin 2017 - 14:31
Bonjour Mel

perso, j'évite les doublages de double quotes dans les chaines ou il y a
souvent des erreurs.

Je fais
squote est une chaine=caract(34)
et je concatène ma chaine avec des squote la ou il faut.

Ensuite, j'utilise systématiquement URLencode pour être sur de mon jeu
de caractères...

Et finalement, en cas de problème, je fais un verspressepapier de la
chaine obtenue et je la teste dans un navigateur

Si problème dans le navigateur, je peux facilement jouer avec la chaine
jusqu'à trouver le problème et corriger le code en fonction.

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 6/13/2017 à 6:18 AM, Mel a écrit :
Bonjour,
Je n'arrive pas à trouver de solutions.
Si une personne a une idée, je suis preneuse.

Je reste disponible pour toutes questions.

Merci d'avance de votre aide.


MEL
Posté le 13 juin 2017 - 16:05
Tu envoies un JSON dans l'URL, cela ne peut pas fonctionner. Il faut utiliser <message à envoyer> décrit dans l'aide de HTTPRequête.

Mais je te conseillerais de:
1. construire ton JSON à partir d'un variant puis de faire un VariantVersJSON (tu ne t'embête plus avec la syntaxe JSON, les double quotes, les caractère spéciaux, les array, etc...). Je vois en plus un simpe quote autour de IdentityValue, ce qui d'après moi n'est pas correct.
2. utiliser les variables de type httpRequête/httpRéponse ou restRequête/restRéponse (avec HTTPEnvoie ou RESTEnvoie)
Posté le 13 juin 2017 - 17:05
Ok, merci pour votre réponse.

je vais regarder cette histoire de doubles quotes.
Posté le 14 juin 2017 - 16:31
Bonjour,

Merci pour votre aide, mais j'ai toujours une erreur.

Voici le code que j'ai mis :
val_sodis est un Variant
val_sodis.IdentityValue = SansEspace(REQ_Liste_Articles_SAP.Gencod)
val_sodis.NotationCode = REQ_Liste_Articles_SAP.Code_Notation
val_sodis.StatusCode = REQ_Liste_Articles_SAP.Statut_Article
val_sodis.ReleaseCode = REQ_Liste_Articles_SAP.Office_A_Venir
val_sodis.ReleaseYear = ""
val_sodis.DateReleaseReal = ""

cMaRequete est un restRequête
cMaRequete.URL = "http://site.fr/api/check/sodis"
cMaRequete.ContentType="application/json"
cMaRequete.Méthode=httpPost
cMaRequete.Contenu = VariantVersJSON(val)


cMaReponse est un restRéponse = RESTEnvoie(cMaRequete)
SI ErreurDétectée ALORS
Trace("ERREUR ----- " + ErreurInfo(errComplet))
SINON
Trace("REST REPONSE --------------- " + cMaReponse..Contenu)
FIN

Voici l'erreur que j'obtiens, j'ai mis que le début de l'erreur, car j'ai une erreur longue :
<!DOCTYPE html><\r><\n><html lang="fr" xmlns="http://www.w3.org/1999/xhtml"><\r><\n> <head><\r><\n> <meta charset="utf-8" /><\r><\n> <title>Internal Server Error</title><\r><\n> <style><\r><\n> body {<\r><\n> font-family: 'Segoe UI', Tahoma, Arial, Helvetica, sans-serif;<\r><\n> font-size: .813em;<\r><\n> color: #222;<\r><\n> background-color: #fff;<\r><\n>}<\r><\n><\r><\n>h1, h2, h3, h4, h5 {<\r><\n> /*font-family: 'Segoe UI'
,Tahoma,Arial,Helvetica,sans-serif;*/<\r><\n> font-weight:



Merci pour votre aide
Posté le 02 juillet 2018 - 06:23
Bonjour,
Pourquoi le variant val n'est pas déclaré ?

cMaRequete est un restRequête
cMaRequete.URL = "http://site.fr/api/check/sodis"
cMaRequete.ContentType="application/json"
cMaRequete.Méthode=httpPost
cMaRequete.Contenu = VariantVersJSON(val)