IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Requete POST invalide


Sujet :

Android

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut Requete POST invalide
    Bonjour à tous,

    J'essaye actuellement, pour une application Android que je suis en train de développer, de créer une requête http de type POST, que j'envoie à un serveur et dont je dois récupérer la réponse.

    Rien de bien sorcier jusque là, sauf que j'ai un problème que je ne comprend pas (sans doute du à mon inexpérience...)

    Ma requête marche très bien sous l'émulateur (j'utilise Eclipse avec le plug-in ADT, et j'utilise la version 2.1 du SDK). J'arrive à l'envoyer, et à récupérer une réponse.

    Par contre, lorsque j'essaye à partir de mon téléphone (un HTC Desire), impossible! La seul réponse que je reçoit est "ERR_INVALID_REQ". Notons également que mes requêtes GET marchent très bien que ce soit avec l'émulateur ou le téléphone.

    Le problème semble venir des arguments. En effet, un POST sans argument obtient bien une vraie réponse du serveur.

    Donc... quelles sont les différences entre l'émulateur et le téléphone? Un problème d'encodage des arguments? J'utilise UrlEncodedFormEntity sur une List<NameValuePair>... Une autre façon de faire?

    Enfin, si vous avez des idées, n'hésitez pas... Aidez moi!

    Merci à tous

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    Peut tu montrer un peu de code?

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    Avec plaisir!

    Code d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    			Log.i("POST", "Creation params");
     
    			HttpPost httppost = new HttpPost("http://www.url.fr/script.php");
     
    			List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
     
     
    			nameValuePairs.add(new BasicNameValuePair("nom",nom.getText().toString()));			
    //....
    			nameValuePairs.add(new BasicNameValuePair("invitation","1"));
     
     
    			Log.i("POST", "Codage params");
     
    			try {
    				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     
    			} catch (UnsupportedEncodingException e) {
    				Log.e("POST", "Encodage");
    			}
     
     
    			Log.i("POST", "Envoie requete");
    			HttpClient httpclient = new DefaultHttpClient();
    			try {
    //résultats ne changent pas avec ou sans le header
    				httppost.setHeader("Content-type","application/x-www-form-urlencoded");
    				HttpResponse response=httpclient.execute(httppost);
    				Log.i("POST",convertStreamToString(response.getEntity().getContent()));
     
    			} catch (ClientProtocolException e) {
    				Log.e("POST", "CPE lors de l'envoi");
    				e.printStackTrace();
    			} catch (IOException e) {
    				Log.e("POST", "IOE lors de l'envoi");
    			} 
     
    		}
    	};

    Log AVD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    10-07 07:47:33.734: INFO/POST(225): Creation params
    10-07 07:47:33.764: INFO/POST(225): Codage params
    10-07 07:47:33.824: INFO/POST(225): Envoie requete
    10-07 07:47:34.224: DEBUG/dalvikvm(225): GC freed 3195 objects / 205792 bytes in 151ms
    10-07 07:47:34.454: INFO/global(225): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    10-07 07:47:34.454: INFO/POST(225):             <XML>
    10-07 07:47:34.454: INFO/POST(225):             <CODE>0</CODE>
    10-07 07:47:34.454: INFO/POST(225):                </XML>
    10-07 07:47:34.454: INFO/POST(225):
    Log HTC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    10-07 09:49:16.928: INFO/POST(7831): Creation params
    10-07 09:49:16.928: INFO/POST(7831): Codage params
    10-07 09:49:16.938: INFO/POST(7831): Envoie requete
    10-07 09:49:18.388: INFO/global(7831): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    10-07 09:49:18.388: INFO/POST(7831): ERR_INVALID_REQ

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    As tu accès au serveur pour savoir pourquoi il t'a invalidé ta requête?
    As tu essayé de passer par le wifi pour tester ta requête avec le htc?

  5. #5
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Citation Envoyé par yan Voir le message
    As tu essayé de passer par le wifi pour tester ta requête avec le htc?
    Je complète d'une petite info pour soutenir la démarche : J'ai cru comprendre que certains opérateurs bloquaient certains types de requetes / ports. Ce qui pourrait coller dans ton cas. Donc comme préconiser, essaye par le WIFI pour voir si le problème vient bien de ton code, et non de l'opérateur.

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    Waow...

    Alors en effet, en Wifi, pas de soucis, ça passe très bien...

    Au delà de la question "comment contourner ce problème?" (autre chose que de faire du GET?), est-ce bien légal comme pratique?

    J'avoue être assez surpris que le problème vienne de là (merci Orange...), mais dans tous les cas, merci pour la rapidité et la précision de la réponse!

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Ourszor Voir le message
    J'avoue être assez surpris que le problème vienne de là (merci Orange...), mais dans tous les cas, merci pour la rapidité et la précision de la réponse!
    ^^ quand le code semble correcte, il faut parfois chercher ailleurs.

    Sinon, c'est quoi comme serveur en face?
    Tu te sert du POST pour faire une authent?

    As tu essayé de mettre tes paramètre dans l'url et de faire un GET?

  8. #8
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    C'est le serveur de ma boite en face, donc je peux demander un script qui attend un GET, mais on m'a clairement fait comprendre qu'un POST était préférable. C'est en effet pour une authentification (qui marche en GET, avec le pass envoyé déjà crypté en MD5), mais également pour des requêtes d'ajout dans la base de donnée. Il aurait donc été préférable d'être obligé de passer par l'application (donc avec POST) que juste avec une URL...

    Donc oui, le GET marche bien...

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Question un peu bête(on ne sait jamais),
    Ton serveur est bien accessible par internet? il ne serait pas uniquement sur le LAN de ton entreprise?
    Tu est sur que le GET marche en 3G?

    Ce qui est sur c'est que le POST, GET,... marche en 3G. Donc pour moi,c'est surtout un problème de configuration réseau. Après je sait pas lequel...

  10. #10
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    Oui, je suis sûr que le GET marche en 3G, avec le wifi désactivé. En revanche, je suis bloqué lorsque je fais un POST. Avec un autre téléphone Android, HTC Hero, également avec Orange, le problème est exactement le même.

    Alors, si c'est un problème de configuration réseau, est-ce que cela viendrait du téléphone? du serveur?

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Ourszor Voir le message
    Alors, si c'est un problème de configuration réseau, est-ce que cela viendrait du téléphone? du serveur?
    Pour moi plutôt serveur. Sinon, je ne voie pas comment les api facebook, flickr,... marcherais. Surtout que le message d'erreur semble plutôt venir de ton serveur.

    C'est possible que orange ajoute en 3G des info dans le header que le serveur n'aime pas.

  12. #12
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    J'ai eu beau chercher aujourd'hui, je n'ai pas trouvé...
    Donc voilà, ça sera du Get pour moi :/

    Merci beaucoup pour l'aide en tous cas!

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Par défaut
    J'ai le même problème avec mon htc desire. Je reçois aussi systématiquement sur mes post un ERR_INVALID_REQ seul, alors que sur l'émulateur tout se passe bien.

    Si c'est un blocage au niveau du téléphone : ça craint ! Mais bon, je n'y crois pas non plus comme indiqué ci-dessus, pas mal d'appli doivent 'forcément' faire des http post.

    Je remarque aussi que j'ai ce message que mon serveur soit démarré ou pas..

    Je vais essayer de trouver une solution...
    A+

  14. #14
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    c'est plutôt un bridage de ton fournisseur d'accès (ton opérateur téléphonique si tu passes pas par le wifi).

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Par défaut
    Oui, ça ressemble vraiment à un bridage (Orange).
    Mais alors comment d'autres appli avec connexion internet de mon htc peuvent fonctionner ? Est-ce un rapport avec le mode débug ou 'sources inconnues' ?

    J'ai peut-être tord, mais ça me paraît un peu gros comme type de blocage. Non ?

    J'ai passé beaucoup de temps sur ce pb.
    Merci du retour.

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Par défaut
    Pour ceux qui rencontreraient le problème, j'ai trouvé un contournement qui fonctionne. ça reste un contournement parce que je ne comprends pas au final le problème :

    En passant non plus pas des objets de type HttpClient/HttpPost mais par un HttpURLConnection avec un setRequestMethod("POST") ça passe en wifi ET sur le réseau mobile.

Discussions similaires

  1. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  2. Pb de syntaxe dans requete POST HTTP
    Par MarkoMytho dans le forum Langage
    Réponses: 5
    Dernier message: 08/08/2006, 07h18
  3. Réponses: 4
    Dernier message: 13/06/2006, 13h36
  4. Optimiser les requetes POST et GET
    Par localhost dans le forum Langage
    Réponses: 3
    Dernier message: 02/04/2006, 02h53
  5. Poster une requete POST avec fsockopen
    Par ePoX dans le forum Langage
    Réponses: 8
    Dernier message: 27/11/2005, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo