3.5文件 / 流 / 请求内容

从本地路径或互联网地址中设置文件内容,自动识别文件名和 Content-Type。

设置文件内容#

从本地路径或互联网地址中设置文件内容,自动识别文件名和 Content-Type

cs
// 设置本地文件HttpRequestBuilder.Post("https://furion.net/")    .SetFileContent(@"C:\Users\Furion\test.png");// 设置本地文件并指定文件名和内容类型HttpRequestBuilder.Post("https://furion.net/")    .SetFileContent(@"C:\Users\Furion\test.png", "avatar.png", "image/png");// 设置互联网文件HttpRequestBuilder.Post("https://furion.net/")    .SetFileContent("https://furion.net/files/test.png");// 设置互联网文件并指定自定义请求配置HttpRequestBuilder.Post("https://furion.net/")    .SetFileContent("https://furion.net/files/test.png",        configure: (httpClient, httpRequestMessage) =>        {            httpClient.Timeout = TimeSpan.FromSeconds(30);        });

设置二进制流内容#

直接设置 Stream 作为请求内容,适用于文件流、内存流、网络流等场景。

cs
// 设置文件流HttpRequestBuilder.Post("https://furion.net/")    .SetStreamContent(File.OpenRead(@"C:\Users\Furion\test.png"));// 设置文件流并指定文件名和内容类型HttpRequestBuilder.Post("https://furion.net/")    .SetStreamContent(File.OpenRead(@"C:\Users\Furion\test.png"), "avatar.png", "image/png");// 设置内存流var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello Furion"));HttpRequestBuilder.Post("https://furion.net/")    .SetStreamContent(memoryStream, contentType: "text/plain");// 设置流并指定编码HttpRequestBuilder.Post("https://furion.net/")    .SetStreamContent(memoryStream, contentEncoding: Encoding.UTF8);

设置请求内容(Body#

支持设置任意类型的请求内容。

cs
HttpRequestBuilder.Post("https://furion.net/")    .SetContent(null);HttpRequestBuilder.Post("https://furion.net/")    .SetContent("furion", "text/plain");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new { id = 1, name = "Furion"});    // 自动推断 Content-TypeHttpRequestBuilder.Post("https://furion.net/")    .SetContent(new { id = 1, name = "Furion"}, "application/json");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new MemoryStream(), "application/octet-stream");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new byte[]{}, "application/octet-stream");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new StringContent(...), "text/plain; charset=utf-8");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new ReadOnlyMemory<byte>(...), "application/octet-stream");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new MultipartContent(), "multipart/form-data");HttpRequestBuilder.Post("https://furion.net/")    .SetContent(new MemoryStream(), "multipart/form-data", disposeResourcesOnRequestCompletion: true); // 配置请求结束后自动释放资源