为什么 WebClient.UploadValues 覆盖了我的 html 网页?
Why does WebClient.UploadValues overwrites my html web page?
我熟悉 Winform 和 WPF,但对 Web 开发不熟悉。有一天看到WebClient.UploadValues决定试一试
static void Main(string[] args)
{
using (var client = new WebClient())
{
var values = new NameValueCollection();
values["thing1"] = "hello";
values["thing2"] = "world";
//A single file that contains plain html
var response = client.UploadValues("D:\page.html", values);
var responseString = Encoding.Default.GetString(response);
Console.WriteLine(responseString);
}
Console.ReadLine();
}
运行后,什么也没有打印出来,html文件内容变成了这样:
thing1=hello&thing2=world
谁能解释一下,谢谢!
UploadValues
方法旨在与 HTTP 协议一起使用。这意味着您需要在网络服务器上托管您的 html 并发出这样的请求:
var response = client.UploadValues("http://some_server/page.html", values);
在这种情况下,该方法将使用 application/x-www-form-urlencoded
编码将值发送到服务器,并且它将 return 来自 HTTP 请求的响应。
我从未将 UploadValues
与本地文件一起使用,documentation
似乎也没有提及任何相关内容。他们只提到 HTTP 或 FTP 协议。所以我想这是将它与本地文件一起使用时的一些副作用 -> 它只是用正在发送的有效负载覆盖该文件的内容。
您使用的 WebClient
不符合预期。
WebClient.UploadValues
的目的是将指定的name/value集合上传到由指定的URI标识的资源。
但它不应该是您磁盘上的某个 本地文件,而应该是一些 web-service 侦听请求和发出回应。
我熟悉 Winform 和 WPF,但对 Web 开发不熟悉。有一天看到WebClient.UploadValues决定试一试
static void Main(string[] args)
{
using (var client = new WebClient())
{
var values = new NameValueCollection();
values["thing1"] = "hello";
values["thing2"] = "world";
//A single file that contains plain html
var response = client.UploadValues("D:\page.html", values);
var responseString = Encoding.Default.GetString(response);
Console.WriteLine(responseString);
}
Console.ReadLine();
}
运行后,什么也没有打印出来,html文件内容变成了这样:
thing1=hello&thing2=world
谁能解释一下,谢谢!
UploadValues
方法旨在与 HTTP 协议一起使用。这意味着您需要在网络服务器上托管您的 html 并发出这样的请求:
var response = client.UploadValues("http://some_server/page.html", values);
在这种情况下,该方法将使用 application/x-www-form-urlencoded
编码将值发送到服务器,并且它将 return 来自 HTTP 请求的响应。
我从未将 UploadValues
与本地文件一起使用,documentation
似乎也没有提及任何相关内容。他们只提到 HTTP 或 FTP 协议。所以我想这是将它与本地文件一起使用时的一些副作用 -> 它只是用正在发送的有效负载覆盖该文件的内容。
您使用的 WebClient
不符合预期。
WebClient.UploadValues
的目的是将指定的name/value集合上传到由指定的URI标识的资源。
但它不应该是您磁盘上的某个 本地文件,而应该是一些 web-service 侦听请求和发出回应。