首页 / .NET / 正文

.NET[C#]RestSharp POST请求如何发送JSON参数?

20559 发布于: 2018-01-03 读完约需5分钟

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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: .NET[C#]如何将一个枚举序列化成对应的字符串?

下一篇: .NET[C#]如何计算两个日期之间的时间间隔(天数)?

本文永久链接码友网 » .NET[C#]RestSharp POST请求如何发送JSON参数?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册