2013-05-07 108 views
1

我无法将工作负载放在使用RestSharp的请求中。谁能帮我?如何将有效载荷附加到RestSharp请求中?

我测试

request.AddBody(payload) - >有效载荷是JSON

序列化对象,但对我不起作用:/:/

非常感谢:d

编辑 -

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 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; } 方法的返回值为空字符串:/:/ – 2013-05-07 07:22:37

回答

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

我可以调用执行对返回的请求。我想知道序列化是否需要由RestSharp框架完成(通过设置serialiser来使用)。

相关问题