2013-05-07 2 views
1

Je ne peux pas mettre une charge de travail dans les demandes avec RestSharp. Quelqu'un peut-il m'aider?Comment attacher une charge utile à une demande RestSharp?

J'ai testé

request.AddBody(payload) -> charge utile est un objet sérialisé dans JSON

mais ne fonctionne pas pour moi: /:/

Merci beaucoup: 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; 
} 

Le retour de la méthode est une chaîne vide: /:/

+0

public override string Post (chaîne de caractères, objet utile) { RestRequest request = new RestRequest (url, Method.POST); request.RequestFormat = DataFormat.Json; request.AddBody (charge utile); IRestResponse response = Client.Exécute (requête); return response.Content; } Le retour de la méthode est une chaîne vide: /: / –

Répondre

4

J'ai une méthode d'assistance que j'utilise:

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; 
    } 

Avec le convertisseur qui ressemble à ceci:

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; } 
} 

Je peux alors appeler exécuter à la demande de retour. Je me demande si la sérialisation doit être effectuée par le framework RestSharp (en définissant le sérialiseur à utiliser).

Questions connexes