具有空变量的 Web API 接收对象
本文关键字:API 对象 Web 变量 | 更新日期: 2023-09-27 18:34:48
我有webforms asp和web api。在 Web 表单中,我尝试以这种方式发送到类的 Web api 对象:
HttpClient client = HttpClientHeader("", login, ClassMd5Calc.CalculateMd5Hash(password));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
UserTariff userTariff = new UserTariff();
userTariff.Login = "some value";
userTariff.Password = "some value";
userTariff.TariffName = "some value";
var json = new JavaScriptSerializer().Serialize(userTariff);
StringContent content = new StringContent(json);
content.Headers.ContentType = new MediaTypeHeaderValue("text/json");
HttpResponseMessage response = client.PostAsync("api/ChangeTariff/", content).Result;
这是我的类(存在于数据协定解决方案中,因此两个项目都使用此类(。
[Serializable]
public class UserTariff
{
public String Login { get; set; }
public String Password { get; set; }
public String TariffName { get; set; }
public decimal Balance { get; set; }
}
我的 Web api 接收包,但所有字段均为空。怎么了?如何解决?
public class ChangeTariffController : ApiController
{
public void Post([FromBody] UserTariff mes)
{
//mes exist, but his property are null: mes.Login=null; mes.Password=null and e.t.c. but need value: "some value"
更新 1.
我也尝试了这段代码,但它显示了相同的错误:
var content = new ObjectContent<UserTariff>(new UserTariff(), new JsonMediaTypeFormatter());
content.Headers.ContentType = new MediaTypeHeaderValue("text/json");
HttpResponseMessage response = client.PostAsync("api/ChangeTariff/", content).Result;
您可以设置对象内容而不是字符串内容,并且应使用 json 媒体类型格式化程序。这应该可以修复 Web API 中的空绑定变量。
此外,使用牛顿软 json 库将对象转换为 json。