传递的变量为空
Passed Variables Null
我正在构建一个小型 Web API 用于同步数据并下拉对象效果很好,但是无论我尝试什么,将我的对象向上推都不起作用。
编辑以反映一些变化:
这是我的控制器:
[System.Web.Mvc.HttpPost]
public void UpdateTasks([FromBody] string s)
{
Console.WriteLine(s);
}
这是我的客户端代码:
HttpContent c = new StringContent("1234");
HttpClient client = new HttpClient();
c.Headers.ContentType = new MediaTypeHeaderValue("application/json");
client.BaseAddress = new Uri("http://localhost/QAQC_SyncWebService/Tasks/UpdateTasks/");
var resp = client.PostAsync(client.BaseAddress, c).Result;
如果我将它放在 URI 中,我可以获得一个值,但单独的字符串内容似乎不起作用。
您正在初始化的行 client.BaseAddress 看起来有点不对。
HttpContent c = new StringContent("1234");
HttpClient client = new HttpClient();
c.Headers.ContentType = new MediaTypeHeaderValue("application/json");
client.BaseAddress = new Uri("http://localhost/QAQC_SyncWebService/Tasks/UpdateTasks");
var resp = client.PutAsync(client.BaseAddress, c).Result;
PutAsync 方法需要完整的 URI,而不仅仅是一个方法。在这里阅读更多:https://msdn.microsoft.com/en-us/library/hh138168(v=vs.118).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
尝试
[HttpPut]
public void UpdateTasks([FromBody]string s)
{
Console.WriteLine(s);
}
另请注意:
- [FromBody]参数必须编码为=value
剩下的最后一个障碍是 Web API 要求您以特定格式传递 [FromBody] 参数。这就是为什么即使我们用 [FromBody] 修饰方法的参数后,我们的值参数在前面的示例中仍为 null 的原因。
Web API 的模型绑定器期望在 POST 主体中找到 POST 主体中的 [FromBody] 值,而不是大多数客户端和 server-side 框架期望的相当标准的键=值编码关键名称。换句话说,它寻找的不是 key=value,而是 =value。
到目前为止,这部分是将原始类型发送到 Web API POST 方法中最令人困惑的部分。理解后还不错,但非常不直观且不易发现。
来自 http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/
我正在构建一个小型 Web API 用于同步数据并下拉对象效果很好,但是无论我尝试什么,将我的对象向上推都不起作用。
编辑以反映一些变化:
这是我的控制器:
[System.Web.Mvc.HttpPost]
public void UpdateTasks([FromBody] string s)
{
Console.WriteLine(s);
}
这是我的客户端代码:
HttpContent c = new StringContent("1234");
HttpClient client = new HttpClient();
c.Headers.ContentType = new MediaTypeHeaderValue("application/json");
client.BaseAddress = new Uri("http://localhost/QAQC_SyncWebService/Tasks/UpdateTasks/");
var resp = client.PostAsync(client.BaseAddress, c).Result;
如果我将它放在 URI 中,我可以获得一个值,但单独的字符串内容似乎不起作用。
您正在初始化的行 client.BaseAddress 看起来有点不对。
HttpContent c = new StringContent("1234");
HttpClient client = new HttpClient();
c.Headers.ContentType = new MediaTypeHeaderValue("application/json");
client.BaseAddress = new Uri("http://localhost/QAQC_SyncWebService/Tasks/UpdateTasks");
var resp = client.PutAsync(client.BaseAddress, c).Result;
PutAsync 方法需要完整的 URI,而不仅仅是一个方法。在这里阅读更多:https://msdn.microsoft.com/en-us/library/hh138168(v=vs.118).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
尝试
[HttpPut]
public void UpdateTasks([FromBody]string s)
{
Console.WriteLine(s);
}
另请注意:
- [FromBody]参数必须编码为=value 剩下的最后一个障碍是 Web API 要求您以特定格式传递 [FromBody] 参数。这就是为什么即使我们用 [FromBody] 修饰方法的参数后,我们的值参数在前面的示例中仍为 null 的原因。 Web API 的模型绑定器期望在 POST 主体中找到 POST 主体中的 [FromBody] 值,而不是大多数客户端和 server-side 框架期望的相当标准的键=值编码关键名称。换句话说,它寻找的不是 key=value,而是 =value。 到目前为止,这部分是将原始类型发送到 Web API POST 方法中最令人困惑的部分。理解后还不错,但非常不直观且不易发现。
来自 http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/