您可以使用HttpWebRequest来发送带有form-data类型的请求体。以下是一个示例代码:

string url = "http://example.com/api/endpoint";
string filePath = "path/to/file.jpg";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "multipart/form-data";

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
    request.ContentType = "multipart/form-data; boundary=" + boundary;

    // 添加表单字段
    streamWriter.WriteLine("--" + boundary);
    streamWriter.WriteLine("Content-Disposition: form-data; name=\"fieldName\"");
    streamWriter.WriteLine();
    streamWriter.WriteLine("fieldValue");

    // 添加文件字段
    streamWriter.WriteLine("--" + boundary);
    streamWriter.WriteLine("Content-Disposition: form-data; name=\"file\"; filename=\"" + Path.GetFileName(filePath) + "\"");
    streamWriter.WriteLine("Content-Type: application/octet-stream");
    streamWriter.WriteLine();
    streamWriter.Flush();

    using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        byte[] buffer = new byte[4096];
        int bytesRead = 0;
        while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
        {
            streamWriter.BaseStream.Write(buffer, 0, bytesRead);
        }
        streamWriter.WriteLine();
    }

    streamWriter.WriteLine("--" + boundary + "--");
    streamWriter.Flush();
}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string responseContent;
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
    responseContent = streamReader.ReadToEnd();
}

Console.WriteLine(responseContent);

在上面的代码中,我们首先创建一个HttpWebRequest对象,并设置请求的URL、请求方法和内容类型。然后,我们使用StreamWriter将表单字段和文件字段写入请求的流中。

对于每个字段,我们首先写入一个分隔符boundary,然后写入字段的Content-Disposition和值。对于文件字段,我们还需要指定文件的文件名和内容类型。

接下来,我们使用FileStream打开文件,并将文件内容写入请求的流中。

最后,我们写入一个结束的分隔符boundary,然后获取服务器的响应,并读取响应内容。

请注意,上述示例中的代码是基于.NET Framework的。如果您正在使用.NET Core或.NET 5+,则可以使用HttpClient类来发送请求,它提供了更简洁和直观的API

c# HttpWebResponse添加 form-data body

原文地址: https://www.cveoy.top/t/topic/hA6c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录