424 votes

Comment faire pour envoyer la requête HTTP en java ?

En Java, Comment composer un message de requête HTTP et l'envoyer à un serveur Web HTTP?

325voto

duffymo Points 188155

Vous pouvez utiliser java.net.HttpUrlConnection.

Ou peut-être que ce lien est plus facile à lire:

http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139

Si Java Almanach est, essayez ce un.

240voto

Chi Points 8991

Du tutoriel Java d'Oracle

 import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL yahoo = new URL("http://www.yahoo.com/");
        URLConnection yc = yahoo.openConnection();
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}
 

72voto

erickson Points 127945

Je sais que d’autres recommandera http-client d’Apache, mais il ajoute complexité (c.-à-d. plus de choses qui peuvent mal tourner) qui est rarement justifié. Pour une tâche simple, `` fera.

57voto

Vineet Reynolds Points 40529

Apache HttpComponents. Les exemples pour les deux modules - HttpCore et HttpClient vous permettra de commencer tout de suite.

Non pas que HttpUrlConnection est un mauvais choix, HttpComponents utilisera beaucoup de fastidieux de codage. Je le recommande, si vous voulez vraiment soutenir beaucoup de serveurs HTTP/les clients avec un minimum de code. Par la voie, HttpCore pourrait être utilisé pour les applications (clients ou serveurs) avec un minimum de fonctionnalités, tandis que HttpClient doit être utilisé pour les clients qui requièrent une prise en charge de plusieurs systèmes d'authentification, le support des cookies, etc.

15voto

Satish Sharma Points 1117

Cela vous aidera. N'oubliez pas d'ajouter le JAR HttpClient.jar au classpath.

 import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class MainSendRequest {

     static String url =
         "http://localhost:8080/HttpRequestSample/RequestSend.jsp";

    public static void main(String[] args) {

        //Instantiate an HttpClient
        HttpClient client = new HttpClient();

        //Instantiate a GET HTTP method
        PostMethod method = new PostMethod(url);
        method.setRequestHeader("Content-type",
                "text/xml; charset=ISO-8859-1");

        //Define name-value pairs to set into the QueryString
        NameValuePair nvp1= new NameValuePair("firstName","fname");
        NameValuePair nvp2= new NameValuePair("lastName","lname");
        NameValuePair nvp3= new NameValuePair("email","email@email.com");

        method.setQueryString(new NameValuePair[]{nvp1,nvp2,nvp3});

        try{
            int statusCode = client.executeMethod(method);

            System.out.println("Status Code = "+statusCode);
            System.out.println("QueryString>>> "+method.getQueryString());
            System.out.println("Status Text>>>"
                  +HttpStatus.getStatusText(statusCode));

            //Get data as a String
            System.out.println(method.getResponseBodyAsString());

            //OR as a byte array
            byte [] res  = method.getResponseBody();

            //write to file
            FileOutputStream fos= new FileOutputStream("donepage.html");
            fos.write(res);

            //release connection
            method.releaseConnection();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X