Sending XML Request Body with Apache HttpClient

Dec 08, 2025 · Programming · 7 views · 7.8

Keywords: Java | XML | Request | Apache HttpClient 4.x

Abstract: This article provides a detailed guide on how to send POST requests with XML content type using Apache HttpClient in Java. It covers setting request headers, constructing the request body, handling encoding and exceptions, with code examples and best practices.

Introduction

Apache HttpClient is a widely used Java library for executing HTTP requests. In many application scenarios, it is necessary to send POST requests containing XML data, such as interacting with web services. This article will explain in detail how to send XML request bodies using HttpClient.

Setting Up the Request

First, create an instance of HttpClient. In HttpClient 4.x, you can use DefaultHttpClient or the more modern HttpClientBuilder. Set up a POST request and the content type to "application/xml".

// Example code
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://example.com");
post.setHeader("Content-Type", "application/xml");

Constructing the Request Body

XML data is often available as a string. You can use HttpEntity to encapsulate the request body. The best practice is to use ByteArrayEntity because it handles encoding issues.

String xml = "<xml>sample data</xml>";
HttpEntity entity = new ByteArrayEntity(xml.getBytes("UTF-8"));
post.setEntity(entity);

Note that in the code, special characters in the XML string like < and > need to be escaped, but in Java strings, they are represented directly.

Sending the Request and Handling the Response

Execute the request and handle the response.

HttpResponse response = client.execute(post);
String result = EntityUtils.toString(response.getEntity());

Alternative Methods

Another method is to use StringEntity, but pay attention to encoding settings.

StringEntity xmlEntity = new StringEntity(xmlString, "UTF-8");
httpRequest.setEntity(xmlEntity);

Best Practices and Exception Handling

Always specify character encoding, such as UTF-8, to avoid garbled text. Use try-catch blocks to handle possible exceptions, such as IOException.

Conclusion

By using Apache HttpClient, you can easily send XML request bodies. It is recommended to use ByteArrayEntity to ensure correct encoding and pay attention to exception handling.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.