Web 表单以两种格式之一提交:应用程序/x-www-form-urlencoded and 多部分/表单数据.
网络客户端提供了一种非常简单方便的方法将任何类型的数据上传到网站。的情况下应用程序/x-www-form-urlencoded你所要做的就是提供一个名称值集合。的情况下多部分/表单数据,据我所知,您必须自己创建请求数据(可能包括文件和名称值对)。
应用程序/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将 HTTP 方法设置为"POST"
和内容类型 to "application/x-www-form-urlencoded"
, URL 编码formData
并上传到指定的uriString
.
多部分/表单数据
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);
这设置了内容类型 to "multipart/form-data"
与请求数据中使用的边界。WebClient.UploadData将 HTTP 方法设置为"POST"
并将字节数组上传到uriString
。
本例中的请求数据包含一个文件file1.dat
和一个表单参数submit-name
设置为Larry
。
格式描述于RFC2388.