当前位置: 首页 > 知识库问答 >
问题:

使用httpClient时添加标头。GetAsync

宿建本
2023-03-14

我正在实现Apiary的其他同事制作的API。io,在Windows应用商店应用程序项目中。

它们显示了我必须实现的方法的示例:

var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/");

using (var httpClient = new HttpClient{ BaseAddress = baseAddress })
{
    using (var response = await httpClient.GetAsync("user/list{?organizationId}"))
    {
        string responseData = await response.Content.ReadAsStringAsync();
    }
}

在这个和其他一些方法中,我需要有一个带有我之前获得的令牌的标头。

如何将该授权标头添加到请求中?

共有3个答案

缪坚诚
2023-03-14

接受的答案有效,但当我想尝试添加接受标头时可能会变得复杂。这就是我最终得到的。对我来说似乎更简单,所以我想我将来会坚持使用它:

client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring);
公孙弘图
2023-03-14

将GetAsync与HttpClient一起使用时,您可以添加授权标头,如下所示:

httpClient.DefaultRequestHeaders.Authorization 
                         = new AuthenticationHeaderValue("Bearer", "Your Oauth token");

这确实会在HttpClient的生命周期中添加授权标头,因此,如果您访问的站点的授权标头没有更改,这将非常有用。

这里有一个详细的SO答案

谭京
2023-03-14

后来的回答,但因为没有人给出这个解决方案。。。

如果不想通过将头添加到DefaultRequestHeaders来设置HttpClient实例上的头,可以为每个请求设置头。

但是您必须使用sendaync()方法。

如果您想重用HttpClient,这是正确的解决方案,这对于

  • 性能和端口耗尽问题
  • 做一些线程安全的事情
  • 每次不发送相同的标头

使用方法如下:

using (var requestMessage =
            new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"))
{
    requestMessage.Headers.Authorization =
        new AuthenticationHeaderValue("Bearer", your_token);
    
    await httpClient.SendAsync(requestMessage);
}
 类似资料:
  • 我们什么时候应该在HttpRequest estMessage对象中使用标头而不是HttpClient中的标头?? 我们需要添加授权(总是在变化)和一些自定义标头(总是在变化) 问题 > 首选哪种方法 我是否应该向HttpClient添加公共头(所有请求都相同),并向HttpRequestMessage对象添加基于请求的头??

  • 我使用GraphQL. Client Nuget包调用需要Content-Type头的Graphql API。以下是我正在做的 设置GraphQL选项。注:我已经设置了选项。媒体类型 初始化客户端和授权标头 GraphQL查询 调用API并检索响应结果 但是,我收到错误的请求,错误为“{”errors:[{”message:“必须提供查询字符串。”}]}” 我做错了什么?如何正确设置内容类型标题。

  • 这是我的密码: 这里是网络调试: 数据存储在请求有效载荷中,但在我的服务器中没有收到POST值: 我相信这个错误来自于帖子中没有设置标题,我做错了什么?

  • 我正在开发一个带有Spring Cloud的网关,我需要拦截消耗Oauth的请求,然后获取响应并添加带有jwt值的标头(Ouath的响应) 我的筛选代码: 我的服务: 完整代码Gitlab 错误: java.lang.IllegalStateException:块()/块第一()/块最后()被阻塞,线程reactor-超文本传输协议-nio-3不支持 当我使用String token=rep.bl

  • 问题内容: 我正在尝试创建一个独立的客户端来使用某些Web服务。我必须将我的用户名和密码添加到SOAP Header。我尝试添加凭据,如下所示: 当我在服务上调用方法时,出现以下异常: 我究竟做错了什么?如何将这些属性添加到SOAP Header? 编辑:我正在使用JDK6中包含的JAX-WS 2.1。我现在正在使用JAX-WS 2.2。我现在得到以下异常: 如何创建此令牌? 问题答案: 不是10

  • 我正在尝试生成一个带有授权标头的HTTP请求: 但此代码生成的请求不包含授权头: Cache-Control:无缓存 access-control-request-method: 来源:http://localhost:3021 接受语言:en-US,en;q=0.8,he;q=0.6 我做错了什么?