| |
Membre enregistré 19 messages |
|
Posté le 19 mars 2017 - 21:53 |
Bonjour,
j'ai un souci avec httpdonneresultat qui marche à la perfection sur le simulateur mais renvoie du vide sur le téléphone.
Après de longues recherches, j'ai essayé avec ANSIVERSUNICODE et d'autres combinaisons mais rien ... je désespère ...
j'ai cru comprendre que le pb venait du codage mais j'ai du mal à comprendre la problématique ...
HELP !!!!
(Avec windev développez 10 fois plus vite ... 2 jours de recherche pour un simple HTTP GET ... ca va être plus long que prévu !)Message modifié, 19 mars 2017 - 22:12 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 129 messages Popularité : +5 (5 votes) |
|
Posté le 20 mars 2017 - 05:14 |
Bonjour,
As-tu essayé
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne UNICODE = bufRes ...
ou
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne ANSI = UnicodeVersAnsi(bufRes) ...
-- Cdlt JPhDMessage modifié, 20 mars 2017 - 05:17 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 129 messages Popularité : +5 (5 votes) |
|
Posté le 20 mars 2017 - 08:06 |
Il faut lire buf_Res dans les 2nd lignes
-- Cdlt JPhDMessage modifié, 20 mars 2017 - 08:06 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 10:06 |
Jean-Philippe DEGLET a écrit :
Bonjour,
As-tu essayé
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne UNICODE = bufRes ...
ou
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne ANSI = UnicodeVersAnsi(bufRes) ...
-- Cdlt JPhD
cas 1 ne fonctionne pas ... le champ libellé alimenté par buf_res reste vide ... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 10:22 |
Jean-Philippe DEGLET a écrit :
Bonjour,
As-tu essayé
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne UNICODE = bufRes ...
ou
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne ANSI = UnicodeVersAnsi(bufRes) ...
-- Cdlt JPhD Message modifié, 20 mars 2017 - 05:17 le cas 2 me donne que des ????? |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 13:39 |
Bonjour
Sauf cas particulier, le résultat d'un httprequete est une chaine ANSI...
Donc, à toi de mettre ce résultat dans une chaine ANSI, PUIS de convertir ou pas en unicode en fonction de ce que tu fais avec ensuite...
Et non, tu ne peux pas mettre ça sur le dos de windev.
Si tu veux des réponses plus précises, il faudra nous montrer ton code.
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 3/20/2017 à 4:22 AM, dr400 a écrit :
Jean-Philippe DEGLET a écrit : Bonjour,
As-tu essayé
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne UNICODE = bufRes ...
ou
... buf_Res est un buffer = HTTPDonneRésultat(httpRésultat) str_Res est une chaîne ANSI = UnicodeVersAnsi(bufRes) ...
-- Cdlt JPhD Message modifié, 20 mars 2017 - 05:17
le cas 2 me donne que des ????? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 17:25 |
Fabrice Harari a écrit :
Bonjour
Sauf cas particulier, le résultat d'un httprequete est une chaine ANSI...
Donc, à toi de mettre ce résultat dans une chaine ANSI, PUIS de convertir ou pas en unicode en fonction de ce que tu fais avec ensuite...
Et non, tu ne peux pas mettre ça sur le dos de windev.
Si tu veux des réponses plus précises, il faudra nous montrer ton code.
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Bonjour, loin de moi l'idée de "mettre ça sur le dos" de qui que ce soit... mais de constater que je galère depuis plus de 3 jours sur cet aspect pourtant trivial (???) ... j'ai développé avec d'autres IDE sans que cette problématique me prenne autant de temps... Votre formule (vous êtes Consultant donc lié à windev) de "développer 10x plus vite" ne s'adresse donc pas à moi, et à lire les différents posts, ne s'adresse pas non plus à ceux qui ont galéré (y sont-ils même arrivés ???) comme moi ... Mon sujet n'est pas de dénigrer WD mais de trouver une solution à MON problème et surtout de comprendre pourquoi ce n'est pas trivial.
Pour revenir au sujet qui m'intéresse, j'ai essayé bcp de combinaisons ANSI - UNICODE - Buffer - Ansivers... - Unicodevers ... que j'ai pu rencontrer allant même jusqu'à modifier la description du projet (cf photo-ci-dessous).
https://www.dropbox.com/s/cfhiil9yyz040k3/Sans%20titre.png?dl=1
mon code est simple :
gsAdresseicnagenda est une chaîne ANSI = "http://www.google.fr" gsCmarequete est une chaîne ANSI = HTTPRequête(gsAdresseicnagenda) gsCmareponse est un chaîne ANSI = HTTPDonneRésultat() LIB_vac..Libellé = "la réponse est : " + gsCmareponse
Mon problème est surtout de comprendre pourquoi sur le "GO" j'ai une sortie conforme à ma requête :
https://www.dropbox.com/s/cfhiil9yyz040k3/Sans%20titre.png?dl=1
et que le même code porté sur le téléphone me renvoie du vide ...
https://www.dropbox.com/s/h8ip5ofpobuwlp0/Screenshot_2017-03-20-17-14-40.png?dl=1 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 17:35 |
gsAdresseicnagenda est une chaîne ANSI = "http://www.google.fr" gsCmarequete est une chaîne ANSI = HTTPRequête(gsAdresseicnagenda) gsCmareponse est un chaîne ANSI = HTTPDonneRésultat() gsSlibelle est une chaîne UNICODE = AnsiVersUnicode((gsCmareponse)) LIB_vac..Libellé = "la réponse est : " + gsSlibelle
renvoie ce que j'attends sur le "GO" mais un libellé vide sur le téléphone ... |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 17:40 |
Peut-être que tester le retour des fonctions avec ErreurDétectée et ErreurInfo vous donnerait un début d'explication ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 129 messages Popularité : +5 (5 votes) |
|
Posté le 20 mars 2017 - 17:45 |
Re,
Je pense à deux trucs :
1) Tester ta requête
gsAdresseicnagenda est une chaîne UNICODE = "http://www.google.fr" gsCmareponse, gsErreurHTTP sont des chaînes UNICODE
SI httpRequête(gsAdresseicnagenda) ALORS gsCmareponse = HTTPDonneRésultat() SI Taille(gsCmareponse) = 0 ALORS ErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(ErreurHTTP) FIN FIN ...
2) L’utilisation de cette fonction entraîne la modification des permissions requises par l’application. Permission requise : INTERNET.
-- Cdlt JPhD |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 17:46 |
3) Le téléphone n'a pas d'accès à Internet... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 17:52 |
Avec ce code, les champs des deux (GO et réel) sont vides
Merci pour ton aide !!
Jean-Philippe DEGLET a écrit :
Re, Je pense à deux trucs : 1) Tester ta requête gsAdresseicnagenda est une chaîne UNICODE = "http://www.google.fr" gsCmareponse, gsErreurHTTP sont des chaînes UNICODE // Envoi de la requête SI httpRequête(gsAdresseicnagenda) ALORS // La requête a pu être envoyée, il s'agit d'une URL valide gsCmareponse = HTTPDonneRésultat() SI Taille(gsCmareponse) = 0 ALORS // Il y a eu une erreur du serveur Web, // le détail de l'erreur est dans l'entête de la page ErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(ErreurHTTP) FIN FIN ... 2) L’utilisation de cette fonction entraîne la modification des permissions requises par l’application. Permission requise : INTERNET. -- Cdlt JPhD Message modifié, 20 mars 2017 - 17:55 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 18:10 |
wddev a écrit : > 3) Le téléphone n'a pas d'accès à Internet...
Heu si (wifi branché et testé) ... avec le code donné par JPhD, je n'ai pas de retour d'erreur dc accés internet ok non? et pourtant le libellé reste désespérément vide ... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 129 messages Popularité : +5 (5 votes) |
|
Posté le 20 mars 2017 - 18:15 |
As-tu vérifié le point 2) Permission d'accéder à Internet
Le code que je viens de tester et qui fonctionnne
gsAdresseicnagenda est une chaîne = "http://www.google.fr" GsCmareponse, GsErreurHTTP sont des chaînes
SI httpRequête(gsAdresseicnagenda) ALORS GsCmareponse = AnsiVersUnicode(HTTPDonneRésultat(httpRésultat)) SI Taille(GsCmareponse) = 0 ALORS GsErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(GsErreurHTTP) FIN FIN
-- Cdlt JPhD |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 18:17 |
wddev a écrit : > Peut-être que tester le retour des fonctions avec ErreurDétectée et ErreurInfo vous donnerait un début d'explication ?
heu comment préciser mon pb : sur le "go" tout marche comme sur des roulettes, aucune erreur, c'est le bonheur, une application aux petits oignons exactement comme je la veux ... mais voilà, la même requête lancée sur le téléphone ne renvoie rien, le vide, aucune erreur, une "info" sur la requête indique qu'elle a bien été faite, mais le httpdonnerésultat(httpresultat) ne renvoie rien, le vide, le néant ... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 18:20 |
Jean-Philippe DEGLET a écrit :
As-tu vérifié le point 2) Permission d'accéder à Internet
Le code que je viens de tester et qui fonctionnne gsAdresseicnagenda est une chaîne = "http://www.google.fr" GsCmareponse, GsErreurHTTP sont des chaînes
// Envoi de la requête SI httpRequête(gsAdresseicnagenda) ALORS // La requête a pu être envoyée, il s'agit d'une URL valide GsCmareponse = AnsiVersUnicode(HTTPDonneRésultat(httpRésultat)) SI Taille(GsCmareponse) = 0 ALORS // Il y a eu une erreur du serveur Web, // le détail de l'erreur est dans l'entête de la page GsErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(GsErreurHTTP) FIN FIN
-- Cdlt JPhD
oui merci JPh, à la génération de l'apk, je vérifie que la permission internet est bien donnée ... et je viens de m'en assurer encore ...
Ton code fonctionne nickel sur le GO mais en est-il de même sur le téléphone (pour moi, il ne renvoie rien) ? |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2017 - 18:27 |
Votre code est effectivement trivial est fonctionne correctement le problème est donc ailleurs (pb de connexion Internet, proxy, etc.). C'est pour ca qu'il faut toujours tester le retour des fonctions. Que vous affiche le code suivant :
gsAdresseicnagenda est une chaîne ANSI = "http://www.google.fr" gsCmarequete est une chaîne ANSI = HTTPRequête(gsAdresseicnagenda) SI ErreurDétectée ALORS Erreur(ErreurInfo()) SINON gsCmareponse est un chaîne ANSI = HTTPDonneRésultat() SI ErreurDétectée ALORS Erreur(ErreurInfo()) SINON gsSlibelle est une chaîne UNICODE = AnsiVersUnicode((gsCmareponse)) LIB_vac..Libellé = "la réponse est : " + gsSlibelle FIN FIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 129 messages Popularité : +5 (5 votes) |
|
Posté le 20 mars 2017 - 18:38 |
Oui, ce code fonctionne en Simulation et sur un Device Samsung
... gsAdresseicnagenda est une chaîne = "http://www.google.fr" GsCmareponse, GsErreurHTTP sont des chaînes
SI httpRequête(gsAdresseicnagenda) ALORS GsCmareponse = AnsiVersUnicode(HTTPDonneRésultat(httpRésultat)) SI Taille(GsCmareponse) = 0 ALORS GsErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(GsErreurHTTP) FIN FIN Info(GsCmareponse) ...
-- Cdlt JPhDMessage modifié, 20 mars 2017 - 18:39 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 18:43 |
gsAdresseicnagenda est une chaîne = "http://www.google.fr" GsCmareponse, GsErreurHTTP sont des chaînes resConnexion est un booléen resConnexion = InternetConnecté() SI resConnexion = Vrai ALORS Info("Une connexion Internet est active")
SI httpRequête(gsAdresseicnagenda) ALORS GsCmareponse = AnsiVersUnicode(HTTPDonneRésultat(httpRésultat)) SI Taille(GsCmareponse) = 0 ALORS GsErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(GsErreurHTTP) FIN FIN
SINON Info("Aucune connexion Internet n'est active") FIN
LIB_vac..Libellé = "result : " + GsErreurHTTP + "///" + GsCmareponse
me renvoie que la connexion est active ... mais le libellé reste encore et toujours vide ... sauf les "///" qui sont censés séparés l'entête du résultat ... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 18:44 |
Jean-Philippe DEGLET a écrit :
Oui, ce code fonctionne en Simulation et sur un Device Samsung
... gsAdresseicnagenda est une chaîne = "http://www.google.fr" GsCmareponse, GsErreurHTTP sont des chaînes
// Envoi de la requête SI httpRequête(gsAdresseicnagenda) ALORS // La requête a pu être envoyée, il s'agit d'une URL valide GsCmareponse = AnsiVersUnicode(HTTPDonneRésultat(httpRésultat)) SI Taille(GsCmareponse) = 0 ALORS // Il y a eu une erreur du serveur Web, // le détail de l'erreur est dans l'entête de la page GsErreurHTTP = HTTPDonneRésultat(httpEntête) Erreur(GsErreurHTTP) FIN FIN Info(GsCmareponse) ...
-- Cdlt JPhD Message modifié, 20 mars 2017 - 18:39
Alors je vais me jeter du pont ...
le "info" renvoie un champ vide ... aaaarrrrrggggllllMessage modifié, 20 mars 2017 - 19:09 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 129 messages Popularité : +5 (5 votes) |
|
Posté le 20 mars 2017 - 19:23 |
La seule différence que je comprend : ta version Express comparée à ma licence "pleine".
-- Cdlt JPhDMessage modifié, 20 mars 2017 - 19:23 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 20 mars 2017 - 19:48 |
Jean-Philippe DEGLET a écrit :
La seule différence que je comprend : ta version Express comparée à ma licence "pleine".
-- Cdlt JPhD Message modifié, 20 mars 2017 - 19:23 et le fait que le téléphone soit connecté en débogage usb ??? je ne peux pas croire que la version express limite ce genre de process ... en tout cas, je viens de déplacer l'apk créé lors de la génération de l'application et de l'installer sur un autre téléphone et maintenant ca semble fonctionner ... je ne comprends toujours pas pourquoi ça a bogué à part cette histoire de version express et le débogage usb ... En tout cas mille mercis JPh pour ton aide !!!!!! |
| |
| |
| | | |
|
| | |