HTTP POST

cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016 - 20 mai 2008 à 16:14
cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016 - 23 mai 2008 à 08:27
Salut,
J'ai dans la FAQ de developpez.com trouver pour effectuer une requête HTTP POST. C'est justement à partir de cette méthode que j'essaie d'effectuer cela.

J'explique rapidement ce que je veux faire:
Je veux envoyer un fichier (ou son contenu binaire) dans une requête HTTP POST pour le récupérer ensuite et l'écrire sur un serveur via une page ASP.
Mais je n'arrive pas à faire une requête HTTP POST et je  ne trouve aucune solution sur internet.

Voici ce que j'ai déjà fait à partir de la méthode :

public void doPost(URL adresse){
           OutputStreamWriter writer = null;
           BufferedReader reader = null;
           try {
             //encodage des paramètres de la requête
              String donnees = URLEncoder.encode("POST", "http://florent.lagoda.free.fr/applet/uploadASP.asp HTTP/1.1\r\n");
              donnees += URLEncoder.encode("Content-Length","taille\r\n");
              donnees += URLEncoder.encode("Content-type", "multipart/form-data\r\n");          
                           
            

              //création de la connection
              URL url = adresse;
              URLConnection conn = url.openConnection();

              conn.setDoOutput(true);
              conn.setDoInput(true);
             
                
              //envoi de la requête
              writer = new OutputStreamWriter(conn.getOutputStream());
              writer.write(donnees);
              writer.flush();

              //lecture de la réponse
              reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
              String ligne;
              while ((ligne = reader.readLine()) != null) {
                 System.out.println(ligne);
              }
           }catch (Exception e) {
              e.printStackTrace();
           }finally{
              try{writer.close();}catch(Exception e){}
              try{reader.close();}catch(Exception e){}
           }
          
          
   
   
    }

Pour envoyer un fichier présent sur mon disque ou que je convertirais en binaire je voudrais donc savoir comment faire cette requête

 Merci

Florent

7 réponses

jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
20 mai 2008 à 19:29
Bonsoir

Tu dois accepter l'accusé envoyé par le serveur pour conclure l'echange:

if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                     System.out.println(huc.getResponseMessage());
              
            }

Bon courage
0
jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
20 mai 2008 à 19:51
désolé
plutôt c'est System.out.println(conn.getResponseMessage()); [c'est l'effet du copier-coller!!!!!]

bon courage
0
cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016
20 mai 2008 à 20:21
Oui mais mon fichier n'est toujours pas dans le post car je ne sais pas comment faire ...

Florent
0
cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016
22 mai 2008 à 09:29
up

Florent
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016
22 mai 2008 à 10:31
C'est bon j'ai réussi mon fichier est bien dans le POST j'ai vérifier avec Wireshark mais comment le récupèrer pour l'ecrire sur le serveur avec PHP par exemple ,
Merci
0
jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
23 mai 2008 à 00:42
Avec une servlet c'est plus facile:







// Récupération du flux

java.io.DataInputStream dis = new java.io.DataInputStream(request.getInputStream());
dis.readFully(temp);
dis.close();

// Ecriture du fichier sur le serveur
File Serveur = new File("/repertoire/fichier");
FileOutputStream fos = new FileOutputStream(Serveur);
fos.write(temp);
fos.close();
0
cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016
23 mai 2008 à 08:27
Oui mais je n'ai pas de serveur pour les servlets je peux faire cela seulement en ASP et en PHP

Florent
0
Rejoignez-nous