如何以编程方式模拟 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;
不完全是,但你需要这样的东西(来自我参与的一个项目的示例),你可以根据你的要求进行更改。
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;
}