Web api:400错误请求



我有一个工作正常的web api;我已经用Postman测试过了。然而,当从客户端应用程序进行api调用时,我会得到一个400错误。我不知道这里发生了什么。使用Blazor服务器端这是api控制器

[HttpPost]

    public ActionResult AddEvent([FromBody] BtnData json)
    {

        // BtnData listObj = Newtonsoft.Json.JsonConvert.DeserializeObject<BtnData>(json.ToString());
        string Eve = json.Eve.ToString();//listObj.Eve;
        string DogName = json.DogName.ToString(); //listObj.DogName;
        string time = json.Time.ToString(); //listObj.Time;
        string userid = json.Userid.ToString(); //listObj.Userid;
        string familyid = json.Familyid; 

}

这是来自客户端应用程序中Blazor组件页面的api调用

<div class="btn-group-sm">
    <Button class="btn-outline-light btn-sm" @onclick="@Wizz">Wizz</Button>
    <Button class="btn-outline-light btn-sm" @onclick="@Poop">poop </Button>
    <Button class="btn-outline-light btn-sm" @onclick="@Walk">Walk </Button>
    <Button class="btn-outline-light btn-sm" @onclick="@Fetch">Fetch</Button>
    <Button class="btn-outline-light btn-sm" @onclick="@Feed">Feed</Button>
    <Button class="btn-outline-light btn-sm" @onclick="@Bathe">Bathe</Button>

</div>
<br />
<div class="text-center">
    <button class=" btn-outline-success btn-lg" @onclick="@redirect">Save</button>
</div>
@code {
    string id = "1006949";
    string famid = "1006949";
    public void redirect()
    {
        Nav.NavigateTo("Events", true);
        // var httpcontent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
    }
    public async Task Wizz()
    {
        BtnData Events_ = new BtnData();
        Events_.DogName = _Events.TellDog().ToString();
        Events_.Time = DateTime.Now.ToString("MM/dd hh:mm:ss tt");
        Events_.Eve = "wizz";
        Events_.Familyid = famid.ToString();
        Events_.Userid = id.ToString();
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(Events_);
        var client = http.CreateClient();
        await client.PostJsonAsync("https://apidoggo.azurewebsites.net/api/Events", json);
        //string userId = "1006949";

    }

400表示请求不正确。

我注意到您现在在服务器上使用默认的JSon-serizalizer(System.Text(,但在客户端使用NewtonSoft。

所以尝试一下,只是为了消除JSon的不兼容性:

// var json = Newtonsoft.Json.JsonConvert.SerializeObject(Events_);
   var client = http.CreateClient();
// await client.PostJsonAsync("https://apidoggo.azurewebsites.net/api/Events", json);
   await client.PostAsJsonAsync("https://apidoggo.azurewebsites.net/api/Events", Events_);

您可能需要为扩展方法添加using System.Net.Http.Json;

粘贴在此处的代码正确吗?外壳不同于:

时间-时间

Familyid-Familyid

Userid-Userid

相关内容

  • 没有找到相关文章