当我使用WebClient调用控制器中的函数时
using (WebClient client = new WebClient())
{
client.BaseAddress = "http://localhost/";
client.Headers.Add("Content-Type", "application/json");
client.UploadString("api/test", HttpMethod.Put.ToString(), stringParameter);
}
我在控制器中成功调用了该函数,但控制器中的“stringParameter”为空,如下面的代码所示:
[Route("api/test")]
[HttpPut]
public async Task<IHttpActionResult> Test([FromBody] string stringParameter)
{
if (!ModelState.IsValid)
{
// the flow goes here
return BadRequest(ModelState);
}
// ...
}
我想知道我犯的错误在哪里以及如何解决问题。非常感谢你。
备注:“stringParameter”如果是数字如“123”则可以,但如果它是“A123”或“B123”则不起作用。
答案 0 :(得分:1)
当您将内容类型设置为&#34; application / json&#34;你应该发送一个有效的JSON值而不是原始字符串。一个数字是JSON,在纯文本中是相同的,这就是它工作的原因。
在发送之前尝试将文本序列化为JSON:
JsonConvert.ToString(stringParameter);
(我在这里使用Newtonsoft.Json nuget包)
或者,您可以尝试使用内容类型text/plain
,但我不确定您的网络API是否配置为默认处理。