RestSharpPOST请求如何发送JSON参数?
问题描述
比如我们有如下的应用场景
客户端(Client):
var request = new RestRequest(Method.POST);
request.Resource = "Api/Score";
request.RequestFormat = DataFormat.Json;
request.AddBody(request.JsonSerializer.Serialize(new { A = "foo", B = "bar" }));
RestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
基于ASP.NET 的 Web Api服务端(Server):
public class ScoreInputModel
{
public string A { get; set; }
public string B { get; set; }
}
// Api/Score
public JsonResult Score(ScoreInputModel input)
{
// 当使用RestSharp向此接口发送POST请求时接收到的input.A 和 input.B 是空的
}
方案一
使用Restsharp的时候不需要手动序列化传递的数据包,直接使用Restsharp向服务端发送以下代码的POST请求即可:
request.RequestFormat = DataFormat.Json;
request.AddBody(new { A = "foo", B = "bar" }); // uses JsonSerializer
或者,你想传递POST参数形式的,你也可以在Restsharp中的请求(Request)使用 AddParameter :
request.AddParameter("A", "foo");
request.AddParameter("B", "bar");
方案二
var client = new RestClient("http://www.example.com/1/2");
var request = new RestRequest();
request.Method = Method.POST;
request.AddHeader("Accept", "application/json");
request.Parameters.Clear();
request.AddParameter("application/json", body , ParameterType.RequestBody);
var response = client.Execute(request);
var content = response.Content; // 返回的网页内容
其中的 body 为JSON字符串,如:
{
"userId":"sam@company.com" ,
"password":"welcome"
}
方案三
在RestSharp(105.2.3.0)或者以上版本中,你甚至可以直接发送一个JSON 对象作为POST请求的数据包主体,如:
request.AddJsonBody(new { A = "foo", B = "bar" });
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册