如何将 json 格式的有效负载附加到 RestSharp 请求中?
Posted
技术标签:
【中文标题】如何将 json 格式的有效负载附加到 RestSharp 请求中?【英文标题】:How to attach json-formatted payload into RestSharp request? 【发布时间】:2013-05-01 01:40:11 【问题描述】:我无法通过 RestSharp 将工作负载放入请求中。谁能帮帮我?
我测试过
request.AddBody(payload)
-> payload 是 json 中的序列化对象
但是,对我不起作用:
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;
方法的返回是空字符串:/:/
【问题讨论】:
public override string Post(string url, object payload) RestRequest request = new RestRequest(url, Method.POST); request.RequestFormat = DataFormat.Json; request.AddBody(有效载荷); IRestResponse 响应 = Client.Execute(request);返回响应。内容; 方法的返回是空字符串 :/ :/ 【参考方案1】:我有一个我使用的辅助方法:
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 框架完成(通过设置要使用的序列化器)。
【讨论】:
【参考方案2】:Restsharp 版本105.0
增加了一个新方法IRestRequest.AddJsonBody
,所以现在你只需要调用AddJsonBody()
剩下的就交给你了:
request.AddJsonBody(new MyParam
IntData = 1,
StringData = "test123"
);
【讨论】:
以上是关于如何将 json 格式的有效负载附加到 RestSharp 请求中?的主要内容,如果未能解决你的问题,请参考以下文章
生成访问令牌时如何将 userid 参数添加到 jwt 的有效负载?
如何将嵌套 JSON 有效负载的最深层元素转换为 Power Query 中的单独行?
python google sheet API的无效JSON有效负载错误