如何在.Net Core中将Header值添加到HttpWebRequest

sim*_*era 11 .net-core asp.net-core

我正在开发简单的Http客户端以使用Asp.Net核心Web API.我想通过HttpHeaderCollection将几个http标头值传递给Web API.在.Net框架的先前版本中,允许将标头值添加到HttpHeaderCollection中,如下所示

WebHeaderCollection aPIHeaderValues = new    WebHeaderCollection();           
aPIHeaderValues .Add("UserName","somevalue");
aPIHeaderValues .Add("TokenValue", "somevalue");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.add(aPIHeaderValues);
HttpWebResponse response = (HttpWebResponse)_request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

但在.Net Core中,无法向request.Headers集合添加标头.我们也不能通过定义新的WebHeaderCollection来添加标头

WebHeaderCollection aPIHeaderValues = new    WebHeaderCollection();
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以在.Net Core中执行此操作

小智 11

问题是关于HttpWebRequest,不同于HttpClient.
使用HttpWebRequest,您只需分配到您想要的标题:

request.Headers["HeaderToken"] = "HeaderValue";
Run Code Online (Sandbox Code Playgroud)

如果不存在,.NET核心将创建标头.

  • 请不要在帖子中添加标语.这些位置在您的用户个人资料中. (5认同)

Fab*_*och 4

这是一个例子:

SampleClass sampleClass= null;
using (HttpClient client = new HttpClient()){
    client.DefaultRequestHeaders.Add("Authorization", "TOKEN");
    var data = await client.GetAsync("MY_API_URL");
    var jsonResponse = await data.Content.ReadAsStringAsync();
    if (jsonResponse != null)
        sampleClass= JsonConvert.DeserializeObject<SampleClass>(jsonResponse);
    return sampleClass;
}
Run Code Online (Sandbox Code Playgroud)