2010-07-18 38 views
6

Yêu cầu gửi http theo sau gửi dữ liệu bằng cách sử dụng loại nội dung nhiều phần/biểu mẫu dữ liệu.Gửi yêu cầu loại nội dung nhiều phần/biểu mẫu dữ liệu

-----------------------------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 

Danh sách là tên đầu vào. 8274184, 8274174, 8274178 vv là giá trị đầu vào. Nhưng 27311326571405, 27311326571405 ... v.v ... là gì? Tôi muốn gửi cùng một yêu cầu bằng cách sử dụng C# nhưng tôi thực sự không biết nơi tôi có thể để có được con số này.

Trả lời

13

---27311326571405 được gọi là ranh giới và đó là chuỗi ngẫu nhiên không bao giờ xuất hiện trong dữ liệu bạn đang gửi và được sử dụng làm dấu phân tách giữa các giá trị.

Dưới đây là một ví dụ về cách gửi một yêu cầu như vậy đến một địa chỉ nhất định:

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

câu trả lời tuyệt vời, thực sự –

Các vấn đề liên quan