在HTTP请求中,Content-Type请求头用于告知服务端当前请求体的数据格式和编码方式,当请求体为XML格式时,需要设置对应的标准Content-Type值才能保证服务端正确解析数据。

标准Content-Type取值
XML作为请求体发送时,标准且最常用的Content-Type取值是application/xml,如果是纯文本的XML内容,也可以使用text/xml,两者的区别如下:
| Content-Type值 | 适用场景 | 编码说明 |
|---|---|---|
| application/xml | 通用XML数据传输,符合RFC标准,推荐优先使用 | 可指定编码,如application/xml; charset=utf-8 |
| text/xml | 纯文本形式的XML内容,兼容性较好但不符合最新标准 | 默认编码为us-ascii,建议显式指定charset |
设置示例
Java中设置
使用HttpURLConnection发送XML请求时,设置方式如下:
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class XmlRequestDemo {
public static void main(String[] args) throws Exception {
URL url = new URL("http://ipipp.com/api/test");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方法为POST
conn.setRequestMethod("POST");
// 设置Content-Type为application/xml,编码为utf-8
conn.setRequestProperty("Content-Type", "application/xml; charset=utf-8");
// 允许输出请求体
conn.setDoOutput(true);
// 构造XML请求体
String xmlBody = "<?xml version="1.0" encoding="utf-8"?><user><name>张三</name><age>20</age></user>";
// 写入请求体
try (OutputStream os = conn.getOutputStream()) {
os.write(xmlBody.getBytes("utf-8"));
}
// 获取响应码
int responseCode = conn.getResponseCode();
System.out.println("响应码:" + responseCode);
}
}
JavaScript中设置
使用fetch API发送XML请求时,设置方式如下:
// 构造XML请求体
const xmlBody = '<?xml version="1.0" encoding="utf-8"?><user><name>李四</name><age>25</age></user>';
// 发送POST请求
fetch('http://ipipp.com/api/test', {
method: 'POST',
// 设置请求头
headers: {
'Content-Type': 'application/xml; charset=utf-8'
},
// 设置请求体
body: xmlBody
})
.then(response => {
console.log('响应状态:', response.status);
return response.text();
})
.then(data => {
console.log('响应内容:', data);
})
.catch(error => {
console.error('请求失败:', error);
});
常见错误与注意事项
- 不要将Content-Type设置为
application/json或者text/plain,否则服务端会按照对应格式解析,导致XML解析失败。 - 如果XML内容包含中文等非ASCII字符,一定要在Content-Type中显式指定
charset=utf-8,同时XML声明中的encoding也要和charset保持一致。 - 部分老旧的服务端可能只支持
text/xml,此时可以优先尝试该取值,若服务端支持标准规范,还是推荐使用application/xml。
注意:XML声明中的encoding属性需要和Content-Type中指定的charset值一致,否则可能出现乱码问题,例如Content-Type设置为utf-8,XML声明也应是<?xml version="1.0" encoding="utf-8"?>。
XMLContent-TypeHTTP请求请求体application_xml修改时间:2026-07-04 19:33:20