Отправить запрос типа содержимого multipart / form-data - PullRequest
6 голосов
/ 18 июля 2010

Следующий HTTP-запрос отправки отправляет данные с использованием типа содержимого 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 #, но я действительно не знаю, где я могу получить эти цифры.

Ответы [ 3 ]

13 голосов
/ 18 июля 2010

---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());
        }
    }
}
0 голосов
/ 12 марта 2019

Если вы хотите удалить ---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;
}
0 голосов
/ 18 июля 2010

Это полуслучайная строка, используемая для различения различных полей.В заголовке с типом содержимого это задается как boundary.

см. что такое действительные символы для создания границы множества частей

...