【问题标题】:How to add Header values to HttpWebRequest in .Net Core如何在 .Net Core 中将 Header 值添加到 HttpWebRequest
【发布时间】:2016-11-08 18:01:46
【问题描述】:

我正在开发简单的 Http 客户端来使用 Asp.Net Core 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();

但在 .Net Core 中,无法将标头添加到 request.Headers 集合中。以及我们不能通过定义新的 WebHeaderCollection 来添加标题

WebHeaderCollection aPIHeaderValues = new    WebHeaderCollection();

.Net Core 中有没有其他方法可以做到这一点

【问题讨论】:

    标签: asp.net-core .net-core


    【解决方案1】:

    问题是关于HttpWebRequest,与HttpClient不同。
    使用HttpWebRequest,您只需像这样分配给您想要的标题:

    request.Headers["HeaderToken"] = "HeaderValue";
    

    .NET core 会在头文件不存在时创建它。

    【讨论】:

    • 请不要在您的帖子中添加标语。这些位置在您的用户个人资料中。
    • 我认为问题是关于HttpClient 而不是HttpWebRequest。来自@fabricio-koch 的Answer 是正确的。
    【解决方案2】:

    这是一个例子:

    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;
    }
    

    【讨论】:

    • 这仅适用于默认请求标头。它不适用于自定义标题。
    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多