2013-10-08 2 views
0

Я не могу найти рабочий пример, может быть, это потому, что его просто невозможно?Простой HTTP POST с анонимным типом как тело

Я хотел бы взять C# анонимного типа объекта вроде следующего:

var postBody = new 
{ 
    friend = new 
    { 
     name = "dave", 
     last ="franz" 
    }, 
    id = "12345", 
    login = "mylogin" 
}; 

и разместить его на моей веб-службы в простой HTTP POST со следующей после тела:

{ 
    "friend" : 
    { 
     "name" : "dave", 
     "last" : "franz" 
    }, 
    "id" : "12345", 
    "login" : "mylogin" 
}; 

ответ

4

Довольно легко используя Json.net. Вы можете получить его с помощью диспетчера пакетов nuget в VS.

var postBody = new 
{ 
    friend = new 
    { 
     name = "dave", 
     last ="franz" 
    }, 
    id = "12345", 
    login = "mylogin" 
}; 
var postString = Newtonsoft.Json.JsonConvert.SerializeObject(postBody); 
using(var wc = new WebClient()) 
{ 
    wc.Headers.Add("Content-Type", "application/json"); 
    var responseString = wc.UploadString(serviceAddress, "POST", postString); 
} 
+0

Я бы предпочел решение, не устанавливая пакет самородок, но об этом не упоминалось в моем первоначальном сообщении, и ваше решение работает достаточно хорошо. Спасибо, сэр ! – guiomie

+1

@guiomie: предпочтительное решение ASP.NET mvc использует JavaScriptSerializer, который/был помечен как устаревший (есть существенная путаница в отношении этого решения). Я предпочитаю JSON.net в любом случае ... он очень стабилен и намного более мощный, чем что-либо предлагаемое в BCL. – spender

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