首页 文章

根据请求修改请求标头C#HttpClient PCL

提问于
浏览
30

我目前正在使用System.Net.Http.HttpClient进行跨平台支持 .

我读到,为每个请求实例化HttpClient对象并不是一个好习惯,并且应尽可能重用它 .

现在我在为服务编写客户端库时遇到问题 . 某些API调用需要具有特定标头,有些必须不包含此特定标头 .

似乎我只能操纵将随每个请求发送的“DefaultRequestHeaders” .

实际发出请求时是否有选项,例如“client.PostAsync()”仅为特定请求修改标头?

(信息:请求可以是多线程的) .

提前致谢!

2 回答

  • 1

    是的,您可以创建一个新的HttpRequestMessage,设置所需的所有属性,然后将其传递给SendAsync .

    var request = new HttpRequestMessage() {
       RequestUri = new Uri("http://example.org"),
       Method = HttpMethod.Post,
       Content = new StringContent("Here is my content")
    }
    request.Headers.Accept.Add(...);  // Set whatever headers you need to
    
    var response = await client.SendAsync(request);
    
  • 52

    使用HttpContent.Headers . 只需使用所需的头创建HttpContent实例并将其传递给PostAsync方法 .

相关问题