У меня есть вспомогательный метод, который я использую:
private IRestRequest CreateRequest(Uri uri, Method method, object body)
{
IRestRequest request = new RestRequest(uri, method);
request.Resource = uri.ToString();
request.Timeout = _timeout;
if (body != null)
{
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
request.JsonSerializer = new CustomConverter {ContentType = "application/json"};
request.AddBody(body);
}
return request;
}
С помощью конвертера, глядя, как это:
class CustomConverter : ISerializer, IDeserializer
{
private static readonly JsonSerializerSettings SerializerSettings;
static CustomConverter()
{
SerializerSettings = new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
Converters = new List<JsonConverter> { new IsoDateTimeConverter() },
NullValueHandling = NullValueHandling.Ignore
};
}
public string Serialize(object obj)
{
return JsonConvert.SerializeObject(obj, Formatting.None, SerializerSettings);
}
public T Deserialize<T>(IRestResponse response)
{
var type = typeof(T);
return (T)JsonConvert.DeserializeObject(response.Content, type, SerializerSettings);
}
string IDeserializer.RootElement { get; set; }
string IDeserializer.Namespace { get; set; }
string IDeserializer.DateFormat { get; set; }
string ISerializer.RootElement { get; set; }
string ISerializer.Namespace { get; set; }
string ISerializer.DateFormat { get; set; }
public string ContentType { get; set; }
}
можно затем вызвать Execute на возвращаемом запросе. Мне интересно, нужно ли сериализовать инфраструктуру RestSharp (путем установки сериализатора для использования).
public override string Сообщение (строка url, полезная нагрузка объекта) { RestRequest request = new RestRequest (url, Method.POST); request.RequestFormat = DataFormat.Json; request.AddBody (полезная нагрузка); IRestResponse response = Client.Execute (request); return response.Content; } Возврат метода пустой строки: /: / –