[英]Send multipart/form-data content type request
以下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
列表是輸入名稱。 8274184,8274174,8274178等是輸入值。 但是什么是27311326571405,27311326571405 ......等等? 我想用c#發送相同的請求,但我真的不知道在哪里可以得到這個數字。
---27311326571405
被稱為邊界,它是一個隨機字符串,不應出現在您要發送的數據中,並用作值之間的分隔符。
以下是將此類請求發送到給定地址的示例:
class Program
{
static void Main()
{
var data = new List<KeyValuePair<string, string>>(new[]
{
new KeyValuePair<string, string>("list", "8274184"),
new KeyValuePair<string, string>("list", "8274174"),
new KeyValuePair<string, string>("list", "8274178"),
new KeyValuePair<string, string>("antirobot", "2341234"),
new KeyValuePair<string, string>("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());
}
}
}
它是一個半隨機字符串,用於區分不同的字段。 在內容類型標題中,這是作為boundary
給出的。
如果您想刪除---27311326571405
邊界值作為響應,請使用以下代碼
var multiplarty = require('multiparty')
var util = require('util')
if ( req.method === 'POST') {
var form = new multiplarty.Form();
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields}));
});
return;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.