Ответ 1
Я думаю, вам просто придется сериализовать объект в JSON, прежде чем использовать экземпляр WebClient. Надеюсь, что это поможет
var url = "...";
var json = JsonHelper.ToJson(myObject);
var response = PostJson(url, json);
Здесь приведен пример отправки данных JSON из класса WebClient:
public static string PostJson(string url, string data)
{
var bytes = Encoding.Default.GetBytes(data);
using (var client = new WebClient())
{
client.Headers.Add("Content-Type", "application/json");
var response = client.UploadData(url, "POST", bytes);
return Encoding.Default.GetString(response);
}
}
Вот простой класс-помощник, который использует класс DataContractJsonSerializer
для сериализации/десериализации объекта в JSON и из него.
public static class JsonHelper
{
public static string ToJson<T>(T instance)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var tempStream = new MemoryStream())
{
serializer.WriteObject(tempStream, instance);
return Encoding.Default.GetString(tempStream.ToArray());
}
}
public static T FromJson<T>(string json)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
return (T)serializer.ReadObject(tempStream);
}
}
}