如何以编程方式模拟 HTTP POST 以发送文件和输入参数

本文关键字:文件 输入 参数 HTTP 编程 方式 模拟 POST | 更新日期: 2023-09-27 18:30:40

我需要以编程方式发布HTML表单,其中包含一些输入参数和一个带有ContentType=application/zip的zip文件。

<form id="form1" method="post" action="http://subdomain.domain.com/" runat="server"  enctype="multipart/form-data">
<div>
    <input type="file" id="file" name="file" value=""  />
    <input type="text" name="param1" value="valparam1" />
    <input type="text" name="param2" value="valparam2" />
    <input type="text" name="param3" value="valparam3" />
    <input id="Submit1" type="submit" value="Send"/>
</div>

简而言之,我想以编程方式模拟上述行为(也发布文件内容类型)。

我更喜欢WebClient而不是HttpRequest;

如何以编程方式模拟 HTTP POST 以发送文件和输入参数

不完全是,但你需要这样的东西(来自我参与的一个项目的示例),你可以根据你的要求进行更改。

    string url = "Your url";
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    httpWebRequest.Method = "POST";
    httpWebRequest.ContentType = "application/json";
    List<string> values = new List<string>();
    values.Add(groupValue);
    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string json = new JavaScriptSerializer().Serialize(new
        {
            apikey = apiKey,
            id = listId,
            name = groupName,
            type = "radio",
            groups = values
        });
        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();
        var response = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(response.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            var grouping = new JavaScriptSerializer().Deserialize(result, typeof(MailchimpGrouping));
            if (grouping != null)
            {
                return (grouping as MailchimpGrouping).Id;
            }
        }
    }
    return 0;
}