我正在使用restsharp对我的终端执行POST请求。
当我添加身体时,我这样做:
request.AddParameter("text/json", message, ParameterType.RequestBody);
字符串消息以这种方式完成: VALUE1.VALUE2 这很简单。
但我的端点只收到 VALUE1
端点签名是:
[HttpPost]
public HttpResponseMessage DoJob([FromBody] string id)
你知道为什么吗?我是否必须以某种方式编码我正在发送的消息?
对邮递员做同样的测试,我没有遇到这种情况。
谢谢!
答案 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)都正确地传递给我的端点