web-dev-qa-db-fra.com

Comment envoyer une simple demande de publication http avec des paramètres de publication en java

J'ai besoin d'un exemple de code simple d'envoi d'une demande de publication http avec des paramètres de publication que je reçois à partir des entrées de formulaire. J'ai trouvé Apache HTTPClient, il possède une API très étendue et de nombreux exemples sophistiqués, mais je ne trouvais pas un exemple simple d'envoi d'une demande de publication http avec des paramètres d'entrée et d'une réponse en texte.

Mise à jour: Je suis intéressé par Apache HTTPClient v.4.x, car la version 3.x est obsolète.

9
Arshak

Exemple de demande HTTP POST avec Apache HttpClient v.4.x

HttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("param1", param1Value, ContentType.TEXT_PLAIN);
builder.addTextBody("param2", param2Value, ContentType.TEXT_PLAIN);
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
HttpResponse response = httpClient.execute(httpMethod);
3
Arshak

Voici l'exemple de code pour Http POST, utilisant l'API Apache HTTPClient.

import Java.io.InputStream;
import org.Apache.commons.httpclient.HttpClient;
import org.Apache.commons.httpclient.methods.PostMethod;


public class PostExample {
    public static void main(String[] args){
        String url = "http://www.google.com";
        InputStream in = null;

        try {
            HttpClient client = new HttpClient();
            PostMethod method = new PostMethod(url);

            //Add any parameter if u want to send it with Post req.
            method.addParameter("p", "Apple");

            int statusCode = client.executeMethod(method);

            if (statusCode != -1) {
                in = method.getResponseBodyAsStream();
            }

            System.out.println(in);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
15
Sumit Desai

J'ai extrait ce code d'un projet Android d'Andrew Gertig que j'ai utilisé dans mon application. Cela vous permet de faire un HTTPost. Si j'en avais le temps, je créerais un exemple de POJO, mais j'espère que vous pourrez disséquer le code et trouver ce dont vous avez besoin. 

Arshak

https://github.com/AndrewGertig/RubyDroid/blob/master/src/com/gertig/rubydroid/AddEventView.Java

private void postEvents()
{
    DefaultHttpClient client = new DefaultHttpClient();

    /** FOR LOCAL DEV   HttpPost post = new HttpPost("http://192.168.0.186:3000/events"); //works with and without "/create" on the end */
    HttpPost post = new HttpPost("http://cold-leaf-59.heroku.com/myevents");
    JSONObject holder = new JSONObject();
    JSONObject eventObj = new JSONObject();

    Double budgetVal = 99.9;
    budgetVal = Double.parseDouble(eventBudgetView.getText().toString());

    try {   
        eventObj.put("budget", budgetVal);
        eventObj.put("name", eventNameView.getText().toString());

        holder.put("myevent", eventObj);

        Log.e("Event JSON", "Event JSON = "+ holder.toString());

        StringEntity se = new StringEntity(holder.toString());
        post.setEntity(se);
        post.setHeader("Content-Type","application/json");


    } catch (UnsupportedEncodingException e) {
        Log.e("Error",""+e);
        e.printStackTrace();
    } catch (JSONException js) {
        js.printStackTrace();
    }

    HttpResponse response = null;

    try {
        response = client.execute(post);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
        Log.e("ClientProtocol",""+e);
    } catch (IOException e) {
        e.printStackTrace();
        Log.e("IO",""+e);
    }

    HttpEntity entity = response.getEntity();

    if (entity != null) {
        try {
            entity.consumeContent();
        } catch (IOException e) {
            Log.e("IO E",""+e);
            e.printStackTrace();
        }
    }

    Toast.makeText(this, "Your post was successfully uploaded", Toast.LENGTH_LONG).show();

}
3
dpott197

http://httpunit.sourceforge.net/doc/cookbook.html utilisez les méthodes PostMethodWebRequest et setParameter

1
piotrek

montre un exemple très simple où vous postez depuis une page HTML, servlet le traite et envoie une réponse textuelle.

http://Java.Sun.com/developer/onlineTraining/Programming/BasicJava1/servlet.html

0
Priyanshu Jha