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
相关产品推荐
相关产品推荐

