在.NET 6的接口调用场景中,使用HttpClient发送Content-Type为application/xml的请求是处理传统XML接口的常见需求,核心需要正确设置请求头、构造合法的XML内容并处理编码问题。

核心实现步骤
1. 配置请求头
首先需要为请求设置正确的Content-Type,指定为application/xml,同时根据接口要求设置字符编码,通常UTF-8是通用选择。
2. 构造XML内容
XML内容需要符合接口要求的格式,注意标签闭合和特殊字符转义,避免格式错误导致服务端解析失败。
3. 发送请求并处理响应
使用HttpClient的PostAsync方法发送请求,然后读取响应内容,同时做好异常处理应对网络异常或接口返回错误的情况。
完整代码示例
以下是一个可直接复用的发送XML请求的完整方法:
using System.Net.Http.Headers;
using System.Text;
public class XmlRequestSender
{
private readonly HttpClient _httpClient;
public XmlRequestSender(HttpClient httpClient)
{
_httpClient = httpClient;
}
/// <summary>
/// 发送application/xml格式的POST请求
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="xmlContent">XML内容字符串</param>
/// <returns>响应内容字符串</returns>
public async Task<string> SendXmlPostRequestAsync(string url, string xmlContent)
{
// 构造请求内容
var content = new StringContent(xmlContent, Encoding.UTF8, "application/xml");
try
{
// 发送POST请求
HttpResponseMessage response = await _httpClient.PostAsync(url, content);
// 确保响应成功
response.EnsureSuccessStatusCode();
// 读取响应内容
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
catch (HttpRequestException ex)
{
// 处理请求异常,例如网络错误、接口不可达等
throw new Exception($"发送XML请求失败:{ex.Message}", ex);
}
}
}
使用示例
调用上述方法的示例代码如下:
class Program
{
static async Task Main(string[] args)
{
// 创建HttpClient实例,实际开发中建议使用IHttpClientFactory管理生命周期
using var httpClient = new HttpClient();
var sender = new XmlRequestSender(httpClient);
// 构造符合接口要求的XML内容
string xmlData = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<request>
<user_id>1001</user_id>
<user_name>测试用户</user_name>
<age>25</age>
</request>";
try
{
// 发送请求,假设接口地址为http://ipipp.com/api/user
string result = await sender.SendXmlPostRequestAsync("http://ipipp.com/api/user", xmlData);
Console.WriteLine($"接口响应内容:{result}");
}
catch (Exception ex)
{
Console.WriteLine($"请求异常:{ex.Message}");
}
}
}
注意事项
- XML内容中的特殊字符如<、>、&等需要正确转义,避免格式错误。
- 如果接口要求的编码不是UTF-8,需要修改StringContent的编码参数,同时调整XML声明中的encoding属性。
- 实际生产环境中不要手动new HttpClient,建议使用.NET 6内置的IHttpClientFactory来管理HttpClient的生命周期,避免端口耗尽问题。
- 如果接口需要额外的请求头比如Authorization,可以在发送请求前通过
_httpClient.DefaultRequestHeaders.Add方法添加。
C#HttpClientapplication_xml.NET_6修改时间:2026-06-10 02:18:29