号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

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

.NET 作者: Rector 1397阅读 0评论 0收藏 收藏本文 编辑

郑重申明:本文未经许可,禁止任何形式转载

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#]RestSharp POST请求如何发送JSON参数?

发布于: 2018-01-03 09:43:00
分享扩散:

文章评论

获取验证码