Отправьте multipart/form-data запрос типа контента

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

6
задан Neir0 18 July 2010 в 09:21
поделиться

2 ответа

---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());
        }
    }
}
13
ответ дан 8 December 2019 в 18:32
поделиться

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

см. what-are-valid-characters-for-creating-a-multipart-form-boundary

0
ответ дан 8 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: