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

Transfernow API Postman可用但C#代码返回403 Forbidden问题求助

Transfernow API集成Windows Forms时403 Forbidden问题求助

我正尝试将transfernow.net的HTTP API集成到Windows Forms应用中,但遇到棘手问题:使用相同API密钥在Postman中测试API调用完全正常,但我的C#代码却返回403 Forbidden错误。已联系Transfernow官方,但预计回复缓慢,恳请各位开发者帮忙排查代码是否存在问题。

我的C#代码如下:

static async Task<string> SendPostRequestAsync()
{
    // 修正原代码语法错误:补充赋值运算符=
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

    using (var httpClient = new HttpClient())
    {
        using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api.transfernow.net/v1/transfers"))
        {
            request.Headers.TryAddWithoutValidation("x-api-key", "xxxxxx"); // 出于安全已隐藏,实际与Postman中使用的一致

            request.Content = new StringContent("{        \"langCode\": \"en\",        \"toEmails\": [\"my.contact@provider.com\", \"my.other.contact@provider.com\"],        \"files\": [{          \"name\": \"file1.txt\",          \"size\": 14587        },{          \"name\": \"music.mp3\",          \"size\": 5496409        }],        \"message\": \"A brillant transfer content, thank you\",        \"subject\": \"Text and Music\",        \"validityStart\": \"2022-10-28T08:52:25.955Z\",        \"validityEnd\": \"2022-11-01T08:52:25.955Z\",        \"allowPreview\": true,        \"maxDownloads\": 7      }");
            request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");

            var response = await httpClient.SendAsync(request);
            if (response.IsSuccessStatusCode)
            {
                // 返回响应内容字符串
                return await response.Content.ReadAsStringAsync();
            }
            else
            {
                // 处理错误响应
                MessageBox.Show("Error: " + response.StatusCode, "API Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return null;
            }
        }
    }
}

非常感谢任何帮助。

我已尝试转换Transfernow文档中的curl代码,甚至使用Postman生成代码,但都无法解决该问题。

Postman生成的代码如下:

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.transfernow.net/v1/transfers");
request.Headers.Add("x-api-key", "xxx");
var content = new StringContent("{        \"langCode\": \"en\",        \"toEmails\": [\"ajhbell76@gmail.com\", \"my.other.contact@provider.com\"],        \"files\": [{          \"name\": \"P:\\\\events\\\\test\\\\export\\\\DRB_0221woodlands.jpg\",          \"size\": 2843846        },{          \"name\": \"P:\\\\events\\\\test\\\\export\\\\DRB_0222woodlands.jpg\",          \"size\": 2843846        }],        \"message\": \"A brillant transfer content, thank you\",        \"subject\": \"Text and Music\",        \"allowPreview\": true,        \"maxDownloads\": 7      }", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Postman生成的HTTP请求代码如下:

POST /v1/transfers HTTP/1.1
Host: api.transfernow.net
Content-Type: application/json
x-api-key: xxxxxx
Content-Length: 517

{
        "langCode": "en",
        "toEmails": ["ajhbell76@gmail.com", "my.other.contact@provider.com"],
        "files": [{
          "name": "P:\events\test\export\DRB_0221woodlands.jpg",
          "size": 2843846 
        },{
          "name": "P:\events\test\export\DRB_0222woodlands.jpg",
          "size": 2843846 
        }],
        "message": "A brillant transfer content, thank you",
        "subject": "Text and Music",
        "allowPreview": true,
        "maxDownloads": 7
      }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:32:03