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

avec Java Discussion :

Requête http JAVA


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Requête http JAVA
    Bonjour,

    Je suis actuellement en train de développer un client Http en Java.
    Le souci c'est pour la méthode POST lorsque j'intègre le multipart/form-data.
    ça ne fonctionne pas.

    Voici la requete que j'envoie :
    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
    POST /ClientHttp/get_form.php HTTP/1.1
    Host: localhost
    Connection: close
    Content-Type: multipart/form-data; boundary=---11122277799900
    Content-Length: 251
    -----11122277799900
    Content-Disposition: form-data;name="lastname"
     
    nom
    -----11122277799900
    Content-Disposition: form-data;name="firstname"
     
    prenom
    -----11122277799900
    Content-Disposition: form-data;name=""
     
    Envoyer
    -----11122277799900--


    Et voici la réponse du server :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    HTTP/1.1 400 Bad Request
    Date: Mon, 19 Oct 2009 14:41:31 GMT
    Server: Apache/2.0.63 (Unix) PHP/5.2.11 DAV/2
    Content-Length: 401
    Connection: close
    Content-Type: text/html; charset=iso-8859-1
    Est-ce que quelqu'un pourrait m'aider svp ?
    Est-ce que vous savez comment doit être générer le "boundary" car pour le moment, j'utilise toujours le même ?

    Merci :-)

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Je ne comprend pas ta trame d'envoi. Lorsque tu commences à envoyer les données, il ne dois plus y avoir d'entête.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je ne comprends pas tout là

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Pour le moment, j'ai réussi à faire en sorte que lorsqu'on envoit une requête Http 1.1 utilisant la méthode POST, et en envoyant des paramètres que j'encode, ça fonctionne bien, mon Content-Type est alors application/x-form-urlencoded et tout fonctionne niquel, la réponse du serveur est tout à fait correcte. Maintenant, ce que je veux faire c'est toujours envoyer des paramètres en POST mais en utilisant le enctype : multipart/form-data sans pour le moment gérer l'envoi de fichier. Je veux d'abord que cette requête là fonctionne avant de voir comment fonctionne l'envoi de fichier.

    Ce que je fais :
    - je crée un objet HttpRequest (dans mon constructeur, je commence à créer ma requête, c'est-à-dire que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    query = "POST /chemin_du_fichier HTTP/1.1\r\n";
    query += "Host: localhost\r\n";
    query += "Connection: close\r\n";
    query += "Content-Type: multipart/form-data; boundary=---123456789\r\n"
    - ensuite, j'établie la connexion avec mon server
    - ensuite, je crée une variable enctype pour stocker les paramètres envoyer (les inputs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    enctype = "";
     
    //ce qui va suivre est appelé à chaque fois que j'ajoute un input
    enctype +="-----123456789\r\n";
    enctype += "Content-Disposition: form-data; name=\"firstname\"\r\n\r\n";
    enctype += "prenom\r\n";
    - ensuite, j'envoie la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    enctype += "-----123456789--\r\n";
    query += "Content-Length: "+enctype.length()+"\r\n";
    query += enctype;
    query += "\r\n";
     
    getConnection().getOutputStream().write(query.getBytes());
    Est-ce que quelque chose cloche dans ma requête ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé la solution à mon problème, en effet ma requête était mal formatée.
    Mon erreur est que j'ai omis de mettre "\r\n" juste après mon Content-Length.

    J'avais mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query += "Content-Length: "+enctype.length()+"\r\n";
    Et il fallait mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query += "Content-Length: "+enctype.length()+"\r\n\r\n";
    C'est tout !!

    Morale : ne pas se fier au formatage donné par Live Http Headers de Firefox mais plutôt chercher des exemples de requête Http utilisant multipart dans google.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête HTTP client-serveur en Java
    Par mahdimaaroufi dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 26/04/2015, 10h37
  2. Requêtes HTTP avec java.nio
    Par DavidleVrai dans le forum Général Java
    Réponses: 4
    Dernier message: 02/11/2013, 18h28
  3. Java Requétes HTTP
    Par albert55 dans le forum Général Java
    Réponses: 2
    Dernier message: 01/07/2013, 00h36
  4. Requête Https en java
    Par oldscrout dans le forum Général Java
    Réponses: 2
    Dernier message: 16/04/2010, 15h27
  5. [HTTP]Créer une requête http multipart/related
    Par jothi35 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/04/2005, 15h32

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