2011-11-28 7 views
13

Tôi biết có rất nhiều câu hỏi về việc gửi yêu cầu HTTP POST bằng C#, nhưng tôi đang tìm phương thức sử dụng WebClient thay vì HttpWebRequest. Điều này có thể không? Thật tuyệt vì lớp học WebClient rất dễ sử dụng.Gửi POST với WebClient.DownloadString trong C#

Tôi biết tôi có thể đặt thuộc tính Headers để đặt tiêu đề nhất định, nhưng tôi không biết liệu có thể thực hiện POST từ WebClient hay không.

Trả lời

13

Bạn có thể sử dụng WebClient.UploadData() trong đó sử dụng HTTP POST, tức là .:

using (WebClient wc = new WebClient()) 
{ 
    byte[] result = wc.UploadData("http://stackoverflow.com", new byte[] { }); 
} 

Các dữ liệu tải trọng mà bạn chỉ định sẽ được truyền như cơ thể POST yêu cầu của bạn.

Hoặc có WebClient.UploadValues() để tải lên bộ sưu tập giá trị tên cũng qua HTTP POST.

7

Bạn có thể sử dụng phương pháp tải lên với HTTP 1.0 POST

string postData = Console.ReadLine(); 

using (System.Net.WebClient wc = new System.Net.WebClient()) 
{ 
    wc.Headers.Add("Content-Type","application/x-www-form-urlencoded"); 
    // Upload the input string using the HTTP 1.0 POST method. 
    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postData); 
    byte[] byteResult= wc.UploadData("http://targetwebiste","POST",byteArray); 
    // Decode and display the result. 
    Console.WriteLine("\nResult received was {0}", 
         Encoding.ASCII.GetString(byteResult)); 
}