Отправка объекта JSON на сервер через http GET - PullRequest
3 голосов
/ 20 мая 2011

Я ищу отправку объекта JSON на сервер через GET. Ответ Криса о Опубликовать массив объектов через JSON в ASP.Net MVC3 работает для HTTP POST, но не для GET. Мой случай также работает для POST, но не для GET. Что я могу сделать, чтобы заставить работать Вот мой случай: в контроллере у меня есть следующий метод общедоступный репортаж с экрана ActionResult (экранные данные)

   {
       // do something here
       return View();
   }

У меня есть два ModelView следующим образом:

   public class Screenrecord
   {
      public string Firstname{ get; set; }
      public string Lastname{ get; set; }
   }
   public class Screentable
   {
      public List<Screenrecord> Screenlist { get; set; } 
   }

На стороне клиента я генерирую объект JSON

var Screentable = { Screenlist: screendata };

screendata представляет собой массив Screenrecord

Все это работает, когда я использую POST, но когда я использую GET, я получаю нулевое значение (screendata = null) метод Controllers. Другими словами, когда нажимаешь GO, screendata является нулевым в процедуре Screenreport (Screentable screendata).

Кроме того, если я отправляю один объект JSON, это работает, но если я отправляю массив (список), как я описал, это не так. Это то, что я пытаюсь сделать выполнимым?

Ответы [ 3 ]

10 голосов
/ 20 мая 2011

Нет :-) Это не так, как работает.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

(см. 9.3 GET)

«Метод GET означает получение любой информации (в форме объекта), идентифицируемой посредством Request-URI»

Request-URI является важной частью здесь. В запросе GET отсутствует понятие данных тела.

0 голосов
/ 10 февраля 2016

Попробуйте этот пример в Javascript:

var someObject = {
   id:123456,
   message:"my message",
}

var objStr = JSON.stringify(someObject);

var escapedObjStr = encodeURIComponent(objStr);

var getUrlStr = "http://myserver:port?json="+escapedObjStr

, и теперь вы можете переслать этот URL на ваш сервер.Я знаю, что это не на любом языке .NET, но вы определенно можете найти эквивалентные методы или просто использовать JS прямо сейчас.

0 голосов
/ 14 мая 2015

Попробуйте изменить метод на общедоступный экранный отчет ActionResult (запрос HttpRequestMessage)

Затем используйте приведенный ниже код для получения объекта JSON.

data = request.RequestUri.Query;
data = HttpUtility.ParseQueryString (data) .Get ("запрос");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...