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

C#使用HttpFactory调用HTTPS API路径拼接错误与POST请求400问题求助

问题1:GET请求路径拼接错误修复

你出现拼接错误的核心原因是手动拼接URL参数时变量携带多余符号、符号位置错误,避免此类问题最稳妥的方案是使用专用的查询参数拼接工具类,不要手动用String.Format拼接:

  1. 先确认基础路径变量urlGetHistoryTrades的值为spot/history/trade,末尾不要带多余斜杠
  2. 改用QueryHelpers(需引用Microsoft.AspNetCore.WebUtilities命名空间)拼接查询参数,修正后代码如下:
using Microsoft.AspNetCore.WebUtilities;

public IList<HistoryTrades> HistoryTrades(string path, string VALUE)
{
    var queryParams = new Dictionary<string, string>
    {
        {"symbol", VALUE}
    };
    var fullRequestUrl = QueryHelpers.AddQueryString(urlGetHistoryTrades, queryParams);
    return _restService.GetRequest<IList<HistoryTrades>>(fullRequestUrl).Result;
}

这个工具类会自动处理参数编码、问号和分隔符的位置,不会再出现多余斜杠、问号错位的问题。

问题2:POST请求返回400错误修复

你这个问题的根本原因是参数传递位置错误:
你提供的curl示例里,参数是通过-d参数放在请求体中传输,请求格式为application/x-www-form-urlencoded,而你把参数直接拼接在URL后面属于GET请求的查询参数传参方式,接口无法从请求体中读取到对应参数,所以返回400错误。
修正方案为把参数放到POST请求的请求体中传输,示例代码如下:

using System.Net.Http.Headers;

// 构造表单参数
var postData = new Dictionary<string, string>
{
    {"symbol", "VALUE"},
    {"side", "sell"},
    {"type", "limit"},
    {"time_in_force", "GTC"},
    {"quantity", "10"},
    {"price", "10"}
};
var content = new FormUrlEncodedContent(postData);

// 配置请求头
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "你的Authorization秘钥");

// 发送POST请求
var response = await _httpClient.PostAsync("https://api.server.com/api/3/spot/order", content);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:09:03