4.2添加内容项

当需要将 JSON 数据添加到多部分表单内容中时,HttpMultipartFormDataBuilder 提供了灵活的处理方式,具体取决于是否指定了表单名。

添加 JSON 内容#

当需要将 JSON 数据添加到多部分表单内容中时,HttpMultipartFormDataBuilder 提供了灵活的处理方式,具体取决于是否指定了表单名。

1. 未指定表单名:在这种情况下,JSON 数据会被解析并遍历,其属性将作为独立的表单项进行设置。无论是传入匿名类型还是 JSON 字符串,结果都是相同的。

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddJson(new { id = 1, name = "furion" }); // 未指定表单名(将被赋值给 FormClass 的 Id 和 Name 属性)        // multipart.AddJson("{\"id\":1,\"name\":\"furion\"}"); // 支持 JSON 字符串。同上。    });

上述代码将生成两个表单项:IdName,它们对应于服务端接收的类定义,如:

cs
public class FormClass{    public int Id { get; set; }    public string Name { get; set; }    // 其他属性}

2. 指定表单名:如果为 JSON 数据指定了表单名,则整个 JSON 对象将作为表单的一个嵌套项进行设置。这通常用于服务端期望接收具有嵌套结构的对象。

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddJson(new { id = 1, name = "furion" }); // 未指定表单名(将被赋值给 FormClass 的 Id 和 Name 属性)        multipart.AddJson(new { id = 1, name = "furion" }, "child"); // 指定表单名,将赋值给 FormClass 的 Child 属性)        // multipart.AddJson("{\"id\":1,\"name\":\"furion\"}", "child"); // 支持 JSON 字符串。同上。    });

在这种情况下,服务端接收的类定义应包含一个嵌套类,如:

cs
public class FormClass{    public int Id { get; set; }    public string Name { get; set; }    public ChildClass Child { get; set; } // 嵌套类    // 其他属性...}public class ChildClass{    public int Id { get; set; }    public string Name { get; set; }    // 其他属性...}

添加 HTML 内容#

向多部分表单内容中添加 HTML 内容。

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddHtml("<html></html>", "data");    });

添加 XML 内容#

向多部分表单内容中添加 XML 内容。

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "data");    });

添加文本内容#

向多部分表单内容中添加文本内容。

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddText("Furion", "data");    });