POSTing JSON для URL через WebClient в C #

У меня есть код JavaScript, который мне нужно преобразовать в C #. Мой JavaScript-код отправляет POST некоторые JSON в созданный веб-сервис. Этот код JavaScript работает отлично и выглядит следующим образом:

var vm = { k: "1", a: "2", c: "3", v: "4" }; $.ajax({ url: "http://www.mysite.com/1.0/service/action", type: "POST", data: JSON.stringify(vm), contentType: "application/json;charset=utf-8", success: action_Succeeded, error: action_Failed }); function action_Succeeded(r) { console.log(r); } function log_Failed(r1, r2, r3) { alert("fail"); } 

Я пытаюсь понять, как преобразовать это в C #. Мое приложение использует .NET 2.0. Из того, что я могу сказать, мне нужно сделать что-то вроде следующего:

 using (WebClient client = new WebClient()) { string json = "?"; client.UploadString("http://www.mysite.com/1.0/service/action", json); } 

Я немного застрял в этой точке. Я не уверен, что должен выглядеть json . Я не уверен, нужно ли устанавливать тип содержимого. Если я это сделаю, я не уверен, как это сделать. Я также видел UploadData . Итак, я не уверен, что я даже использую правильный метод. В некотором смысле, сериализация моих данных – моя проблема.

Может ли кто-нибудь сказать мне, что мне здесь не хватает?

Спасибо!

3 Solutions collect form web for “POSTing JSON для URL через WebClient в C #”

Вам нужен сериализатор json для анализа вашего контента, возможно, у вас уже есть его, для вашего первоначального вопроса о том, как сделать запрос, это может быть идея:

  var baseAddress = "http://www.mysite.com/1.0/service/action"; var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress)); http.Accept = "application/json"; http.ContentType = "application/json"; http.Method = "POST"; string parsedContent = < >; ASCIIEncoding encoding = new ASCIIEncoding(); Byte[] bytes = encoding.GetBytes(parsedContent); Stream newStream = http.GetRequestStream(); newStream.Write(bytes, 0, bytes.Length); newStream.Close(); var response = http.GetResponse(); var stream = response.GetResponseStream(); var sr = new StreamReader(stream); var content = sr.ReadToEnd(); 

Надеюсь, поможет,

Вопрос уже ответил, но я думаю, что нашел решение, которое проще и более актуально для названия вопроса, вот оно:

 var cli = new WebClient(); cli.Headers[HttpRequestHeader.ContentType] = "application/json"; string response = cli.UploadString("http://some/address", "{some:\"json data\"}"); 

В следующем примере показано, как выполнить POST JSON с помощью метода WebClient.UploadString :

 var vm = new { k = "1", a = "2", c = "3", v= "4" }; using (var client = new WebClient()) { var dataString = JsonConvert.SerializeObject(vm); client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.UploadString(new Uri("http://www.contoso.com/1.0/service/action"), "POST", dataString); } 

Предпосылки: библиотека Json.NET

  • HTTP POST возвращает ошибку: 417 «Ожидание не выполнено».
  • WebClient vs. HttpWebRequest / HttpWebResponse
  • Как получить код статуса из веб-клиента?
  • Распаковка gzip-ответа от WebClient
  • Войдите на сайт, через C #
  • Как я могу заставить WebClient использовать Cookies?
  • C # - Как сделать HTTP-вызов
  • Использование WebClient или WebRequest для входа на веб-сайт и доступа к данным
  • Автоматически распаковывать ответ gzip через WebClient.DownloadData
  • Печально известная, но без ответа проблема загрузки файла, когда требуется защита Windows
  • ASP.NET-controller: asynchronous модуль или обработчик завершен, пока асинхронная операция все еще находится на рассмотрении
  • Interesting Posts

    Как найти техническую документацию по оборудованию, как руководство по ремонту, в Интернете?

    неопределенная ссылка на gotoxy в C

    Пример NSXMLParser

    «Сервер Tomcat v7.0 Сервер на локальном хосте не смог запустить» без трассировки стека, когда он работает в терминале

    SparkSQL: как работать с нулевыми значениями в пользовательской функции?

    Что означает «программа для интерфейсов, а не реализации»?

    Windows 7, клавиатура Lenovo

    Что такое бар Charms?

    Справочные переменные и объекты в другом месте в форме

    Программное обеспечение для мониторинга использования ЦП и использования ОЗУ процесса?

    Запуск двух DHCP-серверов в одной сети

    Могут ли атрибуты добавляться динамически в C #?

    Как создать источник журнала событий с помощью WiX

    Почему «переполнение: авто» очищает всплывающие windows? И почему нужны чистые поплавки?

    Как я могу подключить два ноутбука?

    Давайте будем гением компьютера.