2015-12-25 2 views
0

Я знаком с Winform и WPF, но новичок в веб-разработке. Однажды увидел WebClient.UploadValues и решил попробовать.Почему WebClient.UploadValues ​​перезаписывает мою 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(); 
} 

После запуска, ничего не печатается, а содержание HTML-файл становится так:

thing1=hello&thing2=world 

Может кто-нибудь объяснить это, спасибо!

+0

Возможно, стоит посмотреть на новую и блестящую вещь из мира отдыха, называемой httpclient, она подражает http более естественным образом - всего лишь мои 2 цента. – loneshark99

ответ

2

Метод UploadValues предназначен для использования с протоколом HTTP. Это означает, что вам нужно разместить свой HTML на веб-сервере и сделать запрос так:

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

В этом случае метод будет посылать значения на сервер с помощью application/x-www-form-urlencoded кодирования и возвращает ответ от HTTP-запрос.

Я никогда не использовал UploadValues с локальным файлом, а documentation ничего не говорит об этом. Они упоминают только протоколы HTTP или FTP. Поэтому я полагаю, что это побочный эффект при использовании его с локальным файлом -> он просто перезаписывает содержимое этого файла передаваемой полезной нагрузкой.

1

Вы используете WebClient не так, как планировали.

Целью WebClient.UploadValues является загрузка указанной коллекции имени/значения ресурсу, указанному указанным URI.

Но это не должно быть какой-то локальный файл на жестком диске, но вместо этого он должен быть какой-то веб-сервис прослушивание запросов и выдачи Свои замечания.

Смежные вопросы