PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Problème requete HTTP
Problème requete HTTP
Débuté par Serge CARREY, 30 nov. 2015 20:54 - 6 réponses
Posté le 30 novembre 2015 - 20:54
Bonjour,

Je suis en train de faire des essais avec WinDev Mobile 19 pour une future appli Android.

Mon "appli" dispose de 2 boutons et un champ saisie en affichage seul.
Un des boutons transmets 2 variables attendues par un fichier php qui est sur un hébergement Internet et celui-ci renvoi "Oui" qui s'affiche dans le champ de saisie.
L'autre bouton transmets 2 mauvaises variables au fichier php et celui-ci renvoi "Non" dans le champ de saisie.

Tout fonctionne très bien lorsque je le fais depuis l'émulateur sur l'ordinateur, mais ça ne fonctionne pas avec l'appli installée sur le téléphone. Je n'ai pas de message d'erreur et l'appli ne plante pas, mais les variables ne sont pas transmises et je n'ai pas de retour.

Ci-dessous le code. Si quelqu'un peut me dire ou est le problème car je n'ai plus d'idée et j'en ai marre.
Si une autre solution faisant exactement la même chose existe, je suis preneur. Par contre je ne souhaite pas de solution ou il faut installer un webservice Webdev.

Code déclaration globale:

PROCEDURE FEN_Presentation()

ST_Personne est une Structure
sIdentifiant est une chaîne <Sérialise ="Identifiant">
sMdP est une chaîne <Sérialise ="Mot de passe">
FIN

Code du Bouton 1:

tabPersonnes est un tableau de ST_Personne

// Remplissage des données
TableauAjoute(tabPersonnes)
tabPersonnes[1].sIdentifiant = "Serge"
tabPersonnes[1].sMdP = "1234"

bufXML est un Buffer

Sérialise(tabPersonnes, bufXML, psdXML)

// Envoi du XML sur un site en POST
HTTPCréeFormulaire("FormulaireXML")
HTTPAjouteParamètre("FormulaireXML", "DonneesXML", bufXML)
HTTPEnvoieFormulaire("FormulaireXML","http://monsite.com/handling.php", httpPost)

bufResultat est un Buffer
sResultat est une chaîne UNICODE

SI ExtraitChaîne(HTTPDonneRésultat(httpEntête), 2, " ")[[1]] <> "2" ALORS
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
SINON

bufResultat = HTTPDonneRésultat(httpRésultat)
sResultat= UTF8VersUnicode(bufResultat)
SAI_Reponse..Valeur = sResultat
FIN

Code du Bouton 2:

tabPersonnes est un tableau de ST_Personne

// Remplissage des données
TableauAjoute(tabPersonnes)
tabPersonnes[1].sIdentifiant = "Serge"
tabPersonnes[1].sMdP = "12345"

bufXML est un Buffer

Sérialise(tabPersonnes, bufXML, psdXML)

// Envoi du XML sur un site en POST
HTTPCréeFormulaire("FormulaireXML")
HTTPAjouteParamètre("FormulaireXML", "DonneesXML", bufXML)
HTTPEnvoieFormulaire("FormulaireXML","http://monsite.com/handling.php", httpPost)

bufResultat est un Buffer
sResultat est une chaîne UNICODE

SI ExtraitChaîne(HTTPDonneRésultat(httpEntête), 2, " ")[[1]] <> "2" ALORS
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
SINON

bufResultat = HTTPDonneRésultat(httpRésultat)
sResultat= UTF8VersUnicode(bufResultat)
SAI_Reponse..Valeur = sResultat
FIN
Posté le 01 décembre 2015 - 02:38
Bonjour Serge


PROCEDURE FEN_Presentation()

ST_Personne est une Structure
sIdentifiant est une chaîne <Sérialise ="Identifiant"> sMdP est
une chaîne <Sérialise ="Mot de passe">
FIN


Pour outes les chaines, à la place de est une chaine, essaye avec EST
UNE CHAINE ANSI

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




Code du Bouton 1:

tabPersonnes est un tableau de ST_Personne

// Remplissage des données
TableauAjoute(tabPersonnes)
tabPersonnes[1].sIdentifiant = "Serge"
tabPersonnes[1].sMdP = "1234"

bufXML est un Buffer

Sérialise(tabPersonnes, bufXML, psdXML)

// Envoi du XML sur un site en POST
HTTPCréeFormulaire("FormulaireXML")
HTTPAjouteParamètre("FormulaireXML", "DonneesXML", bufXML)
HTTPEnvoieFormulaire("FormulaireXML","http://monsite.com/handling.php",
httpPost)

bufResultat est un Buffer
sResultat est une chaîne UNICODE

SI ExtraitChaîne(HTTPDonneRésultat(httpEntête), 2, " ")[[1]] <> "2" ALORS
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
SINON

bufResultat = HTTPDonneRésultat(httpRésultat)
sResultat= UTF8VersUnicode(bufResultat)
SAI_Reponse..Valeur = sResultat
FIN

Code du Bouton 2:

tabPersonnes est un tableau de ST_Personne

// Remplissage des données
TableauAjoute(tabPersonnes)
tabPersonnes[1].sIdentifiant = "Serge"
tabPersonnes[1].sMdP = "12345"

bufXML est un Buffer

Sérialise(tabPersonnes, bufXML, psdXML)

// Envoi du XML sur un site en POST
HTTPCréeFormulaire("FormulaireXML")
HTTPAjouteParamètre("FormulaireXML", "DonneesXML", bufXML)
HTTPEnvoieFormulaire("FormulaireXML","http://monsite.com/handling.php",
httpPost)

bufResultat est un Buffer
sResultat est une chaîne UNICODE

SI ExtraitChaîne(HTTPDonneRésultat(httpEntête), 2, " ")[[1]] <> "2" ALORS
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
SINON

bufResultat = HTTPDonneRésultat(httpRésultat)
sResultat= UTF8VersUnicode(bufResultat)
SAI_Reponse..Valeur = sResultat
FIN
Posté le 01 décembre 2015 - 19:48
Bonsoir Fabrice,

Merci beaucoup pour la réponse.

Je vais essayer et je vous redis.
Posté le 01 décembre 2015 - 20:09
Re Bonsoir,

J'ai modifié mon comme vous me l'avez préconisé (voir ci-dessous) mais malheureusement le résultat est le même.
Ca marche depuis l'ordi mais depuis le téléphone.

Code déclaration globale:
PROCEDURE FEN_Presentation()
ST_Personne est une Structure
sIdentifiant est une chaîne ANSI <Sérialise ="Identifiant">
sMdP est une chaîne ANSI <Sérialise ="Mot de passe">
FIN

Code du Bouton 1:
tabPersonnes est un tableau de ST_Personne

// Remplissage des données
TableauAjoute(tabPersonnes)
tabPersonnes[1].sIdentifiant = "Serge"
tabPersonnes[1].sMdP = "1234"

bufXML est un Buffer

Sérialise(tabPersonnes, bufXML, psdXML)

// Envoi du XML sur un site en POST
HTTPCréeFormulaire("FormulaireXML")
HTTPAjouteParamètre("FormulaireXML", "DonneesXML", bufXML)
HTTPEnvoieFormulaire("FormulaireXML","http://monsite.com/handling.php", httpPost)

bufResultat est un Buffer
sResultat est une chaîne ANSI

SI ExtraitChaîne(HTTPDonneRésultat(httpEntête), 2, " ")[[1]] <> "2" ALORS
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
SINON

bufResultat = HTTPDonneRésultat(httpRésultat)
sResultat= UTF8VersUnicode(bufResultat) // J'ai aussi essayé sans UTF8VersUnicode , mais ça ne change rien

SAI_Reponse..Valeur = sResultat

FIN

Code du Bouton 2:
tabPersonnes est un tableau de ST_Personne

// Remplissage des données
TableauAjoute(tabPersonnes)
tabPersonnes[1].sIdentifiant = "Serge"
tabPersonnes[1].sMdP = "12345"

bufXML est un Buffer

Sérialise(tabPersonnes, bufXML, psdXML)

// Envoi du XML sur un site en POST
HTTPCréeFormulaire("FormulaireXML")
HTTPAjouteParamètre("FormulaireXML", "DonneesXML", bufXML)
HTTPEnvoieFormulaire("FormulaireXML","http://monsite.com/handling.php", httpPost)

bufResultat est un Buffer
sResultat est une chaîne ANSI

SI ExtraitChaîne(HTTPDonneRésultat(httpEntête), 2, " ")[[1]] <> "2" ALORS
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
SINON

bufResultat = HTTPDonneRésultat(httpRésultat)
sResultat= UTF8VersUnicode(bufResultat) // J'ai aussi essayé sans UTF8VersUnicode , mais ça ne change rien

SAI_Reponse..Valeur = sResultat

FIN
Posté le 08 décembre 2015 - 19:56
Bonsoir,

Personne n'a de solution ou d'explication à me donner ?

Est-ce vraiment irréalisable de faire ce genre de chose avec WinDev Mobile ???
Posté le 09 décembre 2015 - 12:14
Bonjour Serge,

non seulement c'est possible, mais je le fais tout le temps, en
particulier dans WXReplication ou toute la communication est basée sur
ce principe. J'utilise une page awp à la place de ta page php, mais
c'est tout.

Et LE problème que je constate régulièrement, c'est des problème de TYPE
de contenu, ansi/unicode, utf8/ansi, etc...

C'est assez chiant à débugguer, c'est vrai, mais c'est possible. Il faut
faire un fichier log (texte) sur le mobile, le récupérer, puis l'étudier
avec un éditeur hexa, pour être sur de ce qu'on envoie, octet par octet,
puis faire la même chose du coté web, pour voir ce que l'on reçoit et
COMMENT on le traite, étape par étape. Puis éventuellement changer de
type de variable d'un coté ou de l'autre.

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


On 12/8/2015 1:56 PM, Serge wrote:
Bonsoir,

Personne n'a de solution ou d'explication à me donner ?

Est-ce vraiment irréalisable de faire ce genre de chose avec WinDev
Mobile ???
Posté le 09 décembre 2015 - 22:43
Bonsoir Fabrice,

Merci encore pour vos explications.

Je vais essayer de faire comme vous m'indiquez pour trouver le problème.

Cordialement.