2013-05-07 3 views
1

Я не могу разместить нагрузку в запросах с помощью RestSharp. Может кто-нибудь мне помочь?Как добавить полезную нагрузку в запрос RestSharp?

Я тестировал

request.AddBody(payload) -> Полезная нагрузка сериализованная объект в JSON

, но не работает для меня: /:/

спасибо: D

EDIT -

public override string Post(string url, object payload) { 
    RestRequest request = new RestRequest(url, Method.POST); 
    request.RequestFormat = DataFormat.Json; 
    request.AddBody(payload); 
    IRestResponse response = Client.Execute(request); 
    return response.Content; 
} 

Возврат метода пустой строки: /:/

+0

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; } Возврат метода пустой строки: /: / –

ответ

4

У меня есть вспомогательный метод, который я использую:

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 (путем установки сериализатора для использования).

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