Biểu mẫu web được gửi theo một trong hai định dạng: application/x-www-form-urlencoded và multipart/form-data.
WebClient cung cấp cách rất đơn giản và thuận tiện để tải bất kỳ loại dữ liệu nào lên trang web. Trong trường hợp đơn đăng ký/x-www-form-urlencoded, tất cả những gì bạn phải làm là cung cấp NameValueCollection. Trong trường hợp multipart/form-data, AFAIK, bạn phải tự tạo dữ liệu yêu cầu (có thể bao gồm cả tệp và cặp giá trị tên).
application/x-www-form-urlencoded
NameValueCollection formData = new NameValueCollection();
formData["q"] = "c# webclient post urlencoded";
formData["btnG"] = "Google Search";
formData["hl"] = "en";
WebClient myWebClient = new WebClient();
myWebClient.UploadValues(uriString, formData);
WebClient.UploadValues bộ phương thức HTTP để "POST"
và Content-Type-"application/x-www-form-urlencoded"
, URL-mã hóa formData
và sau đó tải lên được chỉ định uriString
.
multipart/form-data
string formData = @"--AaB03x
Content-Disposition: form-data; name=""submit-name""
Larry
--AaB03x
Content-Disposition: form-data; name=""files""; filename=""file1.dat""
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
" + Convert.ToBase64String(
File.ReadAllBytes("file1.dat"), Base64FormattingOptions.InsertLineBreaks) + @"
--AaB03x--
";
WebClient myWebClient = new WebClient();
myWebClient.Encoding = Encoding.ASCII;
myWebClient.Headers.Add("Content-Type", "multipart/form-data; boundary=AaB03x");
myWebClient.UploadString(uriString, formData);
này đặt Content-Type-"multipart/form-data"
với ranh giới sử dụng trong các dữ liệu theo yêu cầu. WebClient.UploadData đặt phương thức HTTP thành "POST"
và tải mảng byte lên uriString
. Dữ liệu yêu cầu trong ví dụ này chứa một tệp file1.dat
và thông số biểu mẫu submit-name
được đặt thành Larry
. Định dạng được mô tả trong RFC2388.
vấn đề gì bạn có với 'WebClient'? Sẽ rất khó để đơn giản hơn thế và vẫn hữu ích. –
Xem các nhận xét khác của tôi, nhưng cụ thể là một POST có cả tệp tải lên và bao gồm một số thông số POST (ví dụ: mã thông báo xác thực sử dụng duy nhất trong trường hợp này) – Greg