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

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


原网址: 访问
创建于: 2023-06-16 18:12:16
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论