我正在开发简单的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中有没有其他替代方法
答案 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")
由于我是作者,所以我总是可以自由地提出任何问题和帮助。