RestSharp从身体上移除点

时间:2015-07-08 18:13:49

标签: c# .net asp.net-web-api2 restsharp

我正在使用restsharp对我的终端执行POST请求。

当我添加身体时,我这样做:

request.AddParameter("text/json", message, ParameterType.RequestBody);

字符串消息以这种方式完成: VALUE1.VALUE2 这很简单。

但我的端点只收到 VALUE1

端点签名是:

[HttpPost]
public HttpResponseMessage DoJob([FromBody] string id)
你知道为什么吗?我是否必须以某种方式编码我正在发送的消息?

对邮递员做同样的测试,我没有遇到这种情况。

谢谢!

2 个答案:

答案 0 :(得分:1)

以下是我RestSharp版本105.1.0.0的工作示例:

var message = "VALUE1.VALUE2"
var client = new RestClient("http://localhost:64648"); //replace with your domain name
var request = new RestRequest("/Home/DoJob", Method.POST); //replace 'Home' with your controller name
request.RequestFormat = DataFormat.Json;
request.AddBody(new { id = message });
client.Execute(request);

我的端点定义

[HttpPost]
public HttpResponseMessage DoJob([System.Web.Http.FromBody] string id) {
  //some code
}

一切都按预期工作。

顺便说一句,如果你想要发布数组,你只需要改变两个地方:

request.AddBody(new { ids = message.Split('.') });

定义

[HttpPost]
public HttpResponseMessage DoJob([System.Web.Http.FromBody] string[] ids) {
  //some code
}

答案 1 :(得分:0)

我解决了这个以另一种方式传递身体的问题。

而不是:

request.AddParameter("text/json", message, ParameterType.RequestBody);

我说:

request.RequestFormat = DataFormat.Json;
request.AddBody(message);

现在消息中的任何字符,消息内容(只要它是json)都正确地传递给我的端点