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
是根元素,element1
和element2
是子元素,value1
和value2
是子元素的值。
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