You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForms调用Web API触发HTTP Error 400错误的排查求助

解决WinForms调用Web API出现HTTP 400错误的方案

HTTP 400(Bad Request)通常是请求格式不合法或参数不符合API要求导致的,结合你的代码,从以下几个方向排查:

1. 确认请求URL是否正确

你的API控制器路由是api/MyWebApi,动作方法SayHello的路由是[action],所以完整请求URL必须是:
[你的API域名或IP]/api/MyWebApi/SayHello
检查客户端代码中Url变量是否拼接正确,是否遗漏了SayHello动作名。

2. 验证请求JSON与UserModel的匹配性

[FromBody]特性要求请求体的JSON结构必须和UserModel完全对应:

  • 检查UserModel的字段名大小写:如果UserModel字段是PascalCase(如Username),而客户端JSON用的是camelCase(如username),需要给UserModel字段添加[JsonPropertyName]特性,示例:
public class UserModel
{
    [JsonPropertyName("username")]
    public string Username { get; set; }
    [JsonPropertyName("pwd")]
    public string Pwd { get; set; }
}
  • 确保客户端Data是合法JSON字符串,比如正确格式应为:"{\"username\":\"test\",\"pwd\":\"1\"}",没有语法错误(如缺少引号、逗号)。

3. 捕获API返回的具体错误详情

修改客户端代码,在异常中获取API返回的错误信息,便于定位问题:

try
{
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    // 处理正常响应逻辑
}
catch (WebException ex)
{
    if (ex.Response is HttpWebResponse errorResponse)
    {
        using (StreamReader reader = new StreamReader(errorResponse.GetResponseStream()))
        {
            string errorContent = reader.ReadToEnd();
            // 输出错误详情,比如模型验证失败的具体原因
            Console.WriteLine(errorContent);
        }
    }
}

4. 检查API端模型验证状态

在API控制器的SayHello方法中添加模型验证检查,打印错误日志:

[HttpPost("[action]")]
public IActionResult SayHello([FromBody] UserModel model)
{
    if (!ModelState.IsValid)
    {
        // 打印所有模型验证错误到日志
        foreach (var err in ModelState.Values.SelectMany(v => v.Errors))
        {
            _logger.LogError(err.ErrorMessage);
        }
        return BadRequest(ModelState);
    }

    // 原有业务逻辑
    if (model.pwd != "1")
    {
        return Json(new { code = "0", msg = "Request failed" });
    }
    else
    {
        return Json(new { code = "1", msg = "Request successful" });
    }
}

5. 确认请求内容长度与编码

检查客户端代码中Data是否为空或无效,写入流前可以打印Data和bytes.Length的值,确保请求体数据有效且长度计算正确。

内容的提问来源于stack exchange,提问作者Bilin Vance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:17:42