2010-07-18 4 views
6

La requête HTTP suivante envoie des données en utilisant un type de contenu multipart/form-data.Envoyer une requête de type de contenu 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 liste est un nom d'entrée. 8274184, 8274174, 8274178 etc. sont des valeurs d'entrée. Mais qu'est-ce que 27311326571405, 27311326571405 ... etc? Je veux envoyer la même demande en utilisant C# mais je ne sais vraiment pas où je peux obtenir ces chiffres.

Répondre

13

---27311326571405 est appelé une limite et il s'agit d'une chaîne aléatoire qui ne devrait jamais apparaître dans les données que vous envoyez et est utilisée comme séparateur entre les valeurs.

Voici un exemple d'envoyer une telle demande à une adresse donnée:

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

grande réponse, en effet –

Questions connexes