web-dev-qa-db-fra.com

Ecrire dans la demande de corps avec HttpClient

Je veux écrire le corps d'une requête avec un type de contenu XML mais je ne sais pas comment utiliser un objet HttpClient ( http://hc.Apache.org/httpclient-3.x/apidocs/index.html )

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpRequest = new HttpPost(this.url);
httpRequest.setHeader("Content-Type", "application/xml");

Et je ne sais pas comment continuer à écrire le corps avec mon XML ...

55
Tata2

Si votre xml est écrit par Java.lang.String vous pouvez simplement utiliser HttpClient de cette façon

    public void post() throws Exception{
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://www.baidu.com");
        String xml = "<xml>xxxx</xml>";
        HttpEntity entity = new ByteArrayEntity(xml.getBytes("UTF-8"));
        post.setEntity(entity);
        HttpResponse response = client.execute(post);
        String result = EntityUtils.toString(response.getEntity());
    }

faites attention aux exceptions.

BTW, l'exemple est écrit par le httpclient version 4.x

106
Larry.Z

Étendre votre code (en supposant que le XML que vous voulez envoyer se trouve dans xmlString):

String xmlString = "</xml>";
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpRequest = new HttpPost(this.url);
httpRequest.setHeader("Content-Type", "application/xml");
StringEntity xmlEntity = new StringEntity(xmlString);
httpRequest.setEntity(xmlEntity );
HttpResponse httpresponse = httpclient.execute(httppost);
23
Santosh