如何在.Net Core

时间:2016-11-08 18:01:47

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

我正在开发简单的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中有没有其他替代方法

3 个答案:

答案 0 :(得分:11)

问题是HttpWebRequest,与HttpClient不同 使用HttpWebRequest,您只需指定一个您想要的标题:

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

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您可以尝试IEnterprise.Easy-HTTP

await new RequestBuilder<ExampleObject>()
.SetHost("https://httpbin.org")
.AddHeader(x => x.Accept_Encoding, "UTF-8")
.AddHeader(x => x.Authorization, "Bearer XXXXXXXXXXXXXXXXX")
.Build()
.Execute();

您还可以添加自定义标头,如下所示:

.AddHeader("Custom-Header", "Header Value")

由于我是作者,所以我总是可以自由地提出任何问题和帮助。