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

无法使用RestSharp,寻求其他通过Bearer Token调用API的方案

替代RestSharp的Bearer Token API调用方案

我需要通过GET/POST调用API,已经实现了可正常运行的RestSharp版本,但该库与应用其余部分不兼容无法使用。我的Token为固定字符串(永不过期),已尝试过HttpClient方式,现寻求其他可使用Bearer Token调用API的方法。

已实现的RestSharp代码示例:

using System;
using RestSharp;
namespace HelloWorldApplication {
  class HelloWorld {
    static void Main(string[] args) {
      var client = new RestClient("https://test.com/api/");
      client.Timeout = -1;
      var request = new RestRequest(Method.GET);
      request.AddHeader("Authorization", "Bearer myToken");
      IRestResponse response = client.Execute(request);
      Console.WriteLine(response.Content);
    }
  }
}

尝试过的HttpClient代码示例:

static async Task Main(string[] args)
 {  
            var endpoint = new Uri("https://test.com/api/");

            HttpClient httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
            httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "myToken");
            var result = httpClient.GetAsync(endpoint).Result;
            var json = result.Content.ReadAsStringAsync().Result;
            Console.WriteLine(json);
}

替代方案

1. 使用HttpWebRequest(同步调用)

适合需要同步执行的场景,无需额外依赖:

using System;
using System.IO;
using System.Net;

namespace ApiCallExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var url = "https://test.com/api/";
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.Headers.Add("Authorization", "Bearer myToken");
            request.Accept = "application/x-www-form-urlencoded";

            try
            {
                using (var response = (HttpWebResponse)request.GetResponse())
                using (var stream = response.GetResponseStream())
                using (var reader = new StreamReader(stream))
                {
                    var content = reader.ReadToEnd();
                    Console.WriteLine(content);
                }
            }
            catch (WebException ex)
            {
                Console.WriteLine($"请求失败:{ex.Message}");
            }
        }
    }
}

2. 优化版HttpClient异步调用

避免使用.Result阻塞线程,采用标准异步写法:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace ApiCallExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var endpoint = new Uri("https://test.com/api/");
            
            // 建议复用HttpClient实例,避免频繁创建
            using var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "myToken");

            try
            {
                var result = await httpClient.GetAsync(endpoint);
                result.EnsureSuccessStatusCode(); // 抛出非2xx状态码异常
                var json = await result.Content.ReadAsStringAsync();
                Console.WriteLine(json);
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine($"请求失败:{ex.Message}");
            }
        }
    }
}

3. 使用WebClient(适用于.NET Framework)

轻量级同步请求方式:

using System;
using System.Net;

namespace ApiCallExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var url = "https://test.com/api/";
            using var client = new WebClient();
            client.Headers.Add("Authorization", "Bearer myToken");
            client.Headers.Add("Accept", "application/x-www-form-urlencoded");

            try
            {
                var content = client.DownloadString(url);
                Console.WriteLine(content);
            }
            catch (WebException ex)
            {
                Console.WriteLine($"请求失败:{ex.Message}");
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:24