You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET 8 MVC中创建multipart/related请求及代码有效性验证

在ASP.NET 8 MVC控制器中创建multipart/related请求

实现要点

multipart/related和multipart/form-data的核心区别在于,前者用于打包关联的内容块(比如SOAP信封+配套附件),每个块需要带唯一的Content-ID,请求头要明确指定multipart/related类型及边界符。

示例代码

以下是符合要求的实现代码:

using System.Net.Http;
using System.Net.Http.Headers;

public async Task<IActionResult> SendSoapRequest()
{
    // 自定义边界符,确保不会出现在请求内容里
    var boundary = "----SoapRelatedBoundary_20240520";
    
    using var client = new HttpClient();
    // 初始化multipart/related类型的内容
    using var multipartContent = new MultipartContent("related", boundary);

    // 1. 添加SOAP信封主体
    var soapXml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
    <soap:Body>
        <!-- 这里填你的SOAP请求内容 -->
    </soap:Body>
</soap:Envelope>";
    var soapContent = new StringContent(soapXml, System.Text.Encoding.UTF8, "text/xml");
    // 给SOAP块设置唯一Content-ID,服务器靠这个识别主体
    soapContent.Headers.ContentId = "<soap-main>";
    multipartContent.Add(soapContent);

    // 2. 添加关联附件(如果需要)
    var attachmentBytes = await System.IO.File.ReadAllBytesAsync("wwwroot/docs/attachment.pdf");
    var attachmentContent = new ByteArrayContent(attachmentBytes);
    attachmentContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/pdf");
    attachmentContent.Headers.ContentId = "<attach-001>";
    multipartContent.Add(attachmentContent);

    // 发送请求
    var response = await client.PostAsync("https://your-soap-server-endpoint", multipartContent);
    response.EnsureSuccessStatusCode();

    var result = await response.Content.ReadAsStringAsync();
    return Ok(result);
}

代码合规性判断

如果你的参考代码和上述结构一致,那完全符合multipart/related的要求:

  • 正确初始化了MultipartContent并指定related类型和边界符
  • 每个内容块都设置了唯一的Content-ID(这是multipart/related的核心要求)
  • 为SOAP主体和附件指定了正确的媒体类型
  • 请求内容的结构完全匹配SOAP服务器的要求

需要额外注意:

  • 边界符要避开内容里的字符串,防止解析出错
  • 部分服务器可能要求Content-ID的格式必须带尖括号,要和服务器文档对齐
  • 多个附件要各自设置唯一的Content-ID

内容的提问来源于stack exchange,提问作者Andrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:43:14