2010-07-18 16 views
6

La siguiente solicitud http post envía datos utilizando el tipo de contenido multipart/form-data.Enviar petición de tipo de contenido 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 

La lista es un nombre de entrada. 8274184, 8274174, 8274178 etc. son valores de entrada. Pero, ¿qué es 27311326571405, 27311326571405 ... etc.? Deseo enviar la misma solicitud usando C# pero realmente no sé dónde puedo obtener estos números.

Respuesta

13

---27311326571405 se llama límite y es una cadena aleatoria que nunca debe aparecer en los datos que está enviando y se utiliza como separador entre los valores.

He aquí un ejemplo de envío de dicha solicitud a una dirección determinada:

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

gran respuesta, de hecho –

Cuestiones relacionadas