我有一些简单的 Python
import requests
response = requests.post(url+'users/', data = 'hallo')
和一个简单的 ASP.Net Core API
public void Post(string value)
{
var newUser = JsonConvert.DeserializeObject<User>(value);
// [...]
}
当我对 C# 代码进行断点时,传入参数“值”始终为空。我尝试发送 JSON 而不是简单的字符串,在 Python 中将标头设置为“text/plain”、“application/json”或“application/x-www-form-urlencoded”,但结果是一样的。我曾尝试[FromBody]
在 ASP.Net Core API 中装饰参数,但随后出现 400 错误(“输入无效”)。
我错过了什么?
(编辑。这是一个 hacky 修复,绝对不是答案,但它可以帮助人们了解问题所在。
public void Post(string value)
{
Request.EnableRewind();
var body = "";
using (var reader = new StreamReader(Request.Body))
{
Request.Body.Seek(0, SeekOrigin.Begin);
body = reader.ReadToEnd();
}
value = body;
var newUser = JsonConvert.DeserializeObject<User>(value);
// [...]
}
然后正确设置值。但是,如果该值位于帖子正文中,那么使用[FromBody]
会导致 400 错误令人沮丧。)