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

使用CurlNative/CurlThin NuGet包发起带认证的JSON POST请求失败求助

使用CurlThin/CurlNative发起携带JSON数据与认证信息的POST请求失败求助

我尝试用C#的CurlThin/CurlNative NuGet包发起携带JSON数据和Bearer认证信息的POST请求,但请求执行失败。以下是我的实现代码,恳请有相关使用经验的开发者帮忙排查问题:

public void CurlPost(string url, string token, string postData)
{
    // 提取libcurl和ssl库到bin目录
    CurlResources.Init();
    var global = CurlNative.Init();
    var easy = CurlNative.Easy.Init();

    try
    {
        CurlNative.Easy.SetOpt(easy, CURLoption.URL, url);
        CurlNative.Easy.SetOpt(easy, CURLoption.POSTFIELDSIZE, Encoding.ASCII.GetByteCount(postData));
        CurlNative.Easy.SetOpt(easy, CURLoption.COPYPOSTFIELDS, postData);

        // HTTPS端点需要设置CA证书路径
        CurlNative.Easy.SetOpt(easy, CURLoption.CAINFO, CurlResources.CaBundlePath);

        var dataCopier = new DataCallbackCopier();
        CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, dataCopier.DataHandler);

        var headers = CurlNative.Slist.Append(SafeSlistHandle.Null, $"Authorization: Bearer {token}");
        CurlNative.Easy.SetOpt(easy, CURLoption.HTTPHEADER, headers.DangerousGetHandle());

        // 指定SSL加密套件列表
        CurlNative.Easy.SetOpt(easy, CURLoption.SSL_CIPHER_LIST, "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256");

        var result = CurlNative.Easy.Perform(easy);

        Console.WriteLine($"Result code: {result}.");
        Console.WriteLine("Response body:");
        Console.WriteLine(Encoding.UTF8.GetString(dataCopier.Stream.ToArray()));
    }
    finally
    {
        easy.Dispose();

        if (global == CURLcode.OK)
            CurlNative.Cleanup();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:25:20