Java发送XML报文

在Java开发中,经常会遇到需要将数据以XML格式发送到其他系统或接收其他系统发送的XML报文的需求。本文将介绍如何使用Java发送XML报文,并附带代码示例。

什么是XML

XML(eXtensible Markup Language)是一种用于描述数据的标记语言。它使用标签来标记数据,并可以自定义标签的名称。XML具有良好的扩展性和可读性,因此广泛应用于数据交换和配置文件等领域。

XML的基本语法如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <element1>value1</element1>
  <element2>value2</element2>
  ...
</root>

在上述示例中,root是根元素,element1element2是子元素,value1value2是子元素的值。

Java发送XML报文

在Java中,可以使用多种方式发送XML报文。本文将以两种常用的方式进行介绍:使用HttpURLConnection发送POST请求和使用Apache HttpClient发送POST请求。

使用HttpURLConnection发送POST请求

HttpURLConnection是Java标准库中用于发送HTTP请求的类。下面是使用HttpURLConnection发送XML报文的示例代码:

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class XmlSender {
    public static void main(String[] args) throws Exception {
        // XML报文
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<root>\n" +
                "  <element1>value1</element1>\n" +
                "  <element2>value2</element2>\n" +
                "</root>";

        // 请求URL
        URL url = new URL("

        // 打开连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        // 设置请求方法为POST
        connection.setRequestMethod("POST");

        // 设置请求头
        connection.setRequestProperty("Content-Type", "application/xml");
        connection.setRequestProperty("Accept", "application/xml");

        // 允许写入请求体
        connection.setDoOutput(true);

        // 获取输出流
        OutputStream outputStream = connection.getOutputStream();

        // 写入XML报文
        outputStream.write(xml.getBytes("UTF-8"));

        // 关闭输出流
        outputStream.close();

        // 获取响应码
        int responseCode = connection.getResponseCode();

        // 处理响应结果
        if (responseCode == HttpURLConnection.HTTP_OK) {
            // 响应成功
            // TODO: 处理响应数据
        } else {
            // 响应失败
            // TODO: 处理失败情况
        }

        // 关闭连接
        connection.disconnect();
    }
}

上述代码中,首先创建了一个URL对象,用于指定请求的URL。然后打开连接,并设置请求方法为POST。接下来设置请求头,包括Content-Type和Accept,用于指定请求和响应的数据类型为XML。然后允许写入请求体,并获取输出流,将XML报文写入输出流。之后关闭输出流,获取响应码。根据响应码的不同,可以处理成功和失败的情况。最后关闭连接。

使用Apache HttpClient发送POST请求

Apache HttpClient是一个功能强大的开源HTTP客户端库。下面是使用Apache HttpClient发送XML报文的示例代码:

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class XmlSender {
    public static void main(String[] args) throws Exception {
        // XML报文
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<root>\n" +
                "  <element1>value1</element1>\n" +
                "  <element2>value2</element2>\n" +
                "</root>";

        // 创建HttpClient
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // 创建HttpPost请求
        HttpPost httpPost = new HttpPost("

        // 设置请求头
        httpPost.setHeader("Content-Type", "application/xml");
        httpPost.setHeader("Accept", "application/xml");

        // 设置请求体
        HttpEntity requestEntity = new StringEntity(xml