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

C# HttpClient发送POST请求返回400,Postman请求正常的原因排查

差异原因及解决方案

  • 手动拼接JSON引发语法错误
    当前通过字符串拼接构造payload,极易出现JSON语法问题,例如"sessionId":" + "\"1\"" + ","会生成"sessionId":""1""(双引号嵌套),这属于无效JSON。Postman的JSON构造不会出现这类问题,建议改用对象序列化生成JSON,确保语法绝对正确:

    // 用匿名类定义请求体结构
    var payloadObj = new {
        merchantId = merchantId,
        posId = merchantId,
        sessionId = "1",
        amount = 2137,
        currency = "PLN",
        description = "test_from_c#",
        email = "sample@gmail.com",
        country = "PL",
        language = "pl",
        urlReturn = urlReturn,
        timeLimit = 15,
        waitForResult = true,
        shipping = 0,
        sign = stringHashResult
    };
    // 序列化生成JSON
    string payload = System.Text.Json.JsonSerializer.Serialize(payloadObj);
    
  • 签名计算数据源不一致
    代码中计算SHA384签名的jsonData是硬编码的固定字符串,若实际merchantId变量值与jsonData中的00000不符,会导致签名不匹配。需确保签名计算的数据源与Postman完全一致,比如使用和请求体相同的字段组合生成签名原始数据。

  • UrlEncode处理差异
    代码中对urlReturn执行了UrlEncode,但Postman可能未做编码或编码规则不同。例如http://sample.com/编码后为http%3a%2f%2fsample.com%2f,若接口期望原始URL而非编码值,会引发参数错误。需对比Postman中的urlReturn值,确认是否需要编码。

  • HttpClient行为与Postman不一致

    • 代码同时创建了_httpClientFactory.CreateClient()和new HttpClient(),后者未复用工厂配置,可能存在默认头差异;
    • 可显式指定StringContent的字符集,确保与Postman的Content-Type一致:
      var content = new StringContent(payload, Encoding.UTF8, "application/json");
      content.Headers.ContentType.CharSet = "utf-8";
      
    • 部分接口会校验User-Agent,HttpClient默认值与Postman不同,可手动设置匹配:
      client.DefaultRequestHeaders.UserAgent.ParseAdd("PostmanRuntime/7.29.0");
      
  • 未读取完整错误信息
    当前异常仅捕获状态码描述,但响应体包含40字节的详细错误内容,需读取该内容定位具体问题:

    catch (HttpRequestException ex) when (response != null)
    {
        var errorDetail = await response.Content.ReadAsStringAsync();
        return BadRequest($"请求失败: {ex.Message},详细错误: {errorDetail}");
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:46:05