发送multipart / form-data内容类型请求

以下http post请求使用multipart / form-data内容类型发送数据。

-----------------------------27311326571405\r\nContent-Disposition: form-data; name="list"\r\n\r\n8274184\r\n-----------------------------27311326571405\r\nContent-Disposition: form-data; name="list"\r\n\r\n8274174\r\n-----------------------------27311326571405\r\nContent-Disposition: form-data; name="list"\r\n\r\n8274178\r\n-----------------------------27311326571405\r\nContent-Disposition: form-data; name="antirobot"\r\n\r\n2341234\r\n-----------------------------27311326571405\r\nContent-Disposition: form-data; name="votehidden"\r\n\r\n1\r\n-----------------------------27311326571405--\r\n 

List是输入名称。 8274184,8274174,8274178等是输入值。 但是什么是27311326571405,27311326571405 ……等等? 我想用c#发送相同的请求,但我真的不知道在哪里可以得到这个数字。

---27311326571405被称为边界,它是一个随机字符串,不应出现在您要发送的数据中,并用作值之间的分隔符。

以下是将此类请求发送到给定地址的示例:

 class Program { static void Main() { var data = new List>(new[] { new KeyValuePair("list", "8274184"), new KeyValuePair("list", "8274174"), new KeyValuePair("list", "8274178"), new KeyValuePair("antirobot", "2341234"), new KeyValuePair("votehidden", "1"), }); string boundary = "----MyAppBoundary" + DateTime.Now.Ticks.ToString("x"); var request = (HttpWebRequest)WebRequest.Create("http://example.com"); request.ContentType = "multipart/form-data; boundary=" + boundary; request.Method = "POST"; using (var requestStream = request.GetRequestStream()) using (var writer = new StreamWriter(requestStream)) { foreach (var item in data) { writer.WriteLine("--" + boundary); writer.WriteLine(string.Format("Content-Disposition: form-data; name=\"{0}\"", item.Key)); writer.WriteLine(); writer.WriteLine(item.Value); } writer.WriteLine(boundary + "--"); } using (var response = request.GetResponse()) using (var responseStream = response.GetResponseStream()) using (var reader = new StreamReader(responseStream)) { Console.WriteLine(reader.ReadToEnd()); } } } 

它是一个半随机字符串,用于区分不同的字段。 在content-type标头中,这是作为boundary给出的。

看看什么是有效字符,用于创建多部分forms边界