具有空变量的 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;

具有空变量的 Web API 接收对象

您可以设置对象内容而不是字符串内容,并且应使用 json 媒体类型格式化程序。这应该可以修复 Web API 中的空绑定变量。

此外,使用牛顿软 json 库将对象转换为 json。