为什么WebClient.UploadValues会覆盖我的html网页?

时间:2015-12-25 08:13:13

标签: c# post webclient system.net

我熟悉Winform和WPF,但不熟悉Web开发。有一天看到了WebClient.UploadValues并决定试一试。

('Model #:', '1561496564')

运行后,没有打印,html文件内容变成这样:

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();
}

有人可以解释一下,谢谢!

2 个答案:

答案 0 :(得分:2)

UploadValues方法旨在与HTTP协议一起使用。这意味着您需要在Web服务器上托管您的html并发出如下请求:

var response = client.UploadValues("http://some_server/page.html", values);

在这种情况下,该方法将使用application/x-www-form-urlencoded编码将值发送到服务器,它将从HTTP请求返回响应。

我从未将UploadValues与本地文件一起使用,documentation似乎没有提及任何相关内容。他们只提到HTTP或FTP协议。所以我认为这与使用本地文件时有一些副作用 - >它只是用正在发送的有效负载覆盖此文件的内容。

答案 1 :(得分:1)

您使用的WebClient并非如预期那样。

WebClient.UploadValues的目的是将指定的名称/值集合上载到由指定URI标识的资源。

但它不应该是您磁盘上的某些本地文件,而应该是某些网络服务监听请求并发出响应。