Je développe un client HTTP simple pour utiliser une API Web Asp.Net Core. Je souhaite transmettre quelques valeurs d'en-tête http à l'API Web via HttpHeaderCollection. Dans les versions précédentes de .Net Framework, il était autorisé d'ajouter des valeurs d'en-tête à HttpHeaderCollection comme suit
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();
Mais dans .Net Core, il n’ya aucun moyen d’ajouter des en-têtes à request.Headers collection. De même, nous ne pouvons pas ajouter d’en-têtes en définissant un nouveau WebHeaderCollection.
WebHeaderCollection aPIHeaderValues = new WebHeaderCollection();
Existe-t-il un autre moyen de faire cela dans .Net Core
La question concerne HttpWebRequest
, qui est différent de HttpClient
.
En utilisant HttpWebRequest
, vous assignez simplement à un en-tête que vous voulez comme ceci:
request.Headers["HeaderToken"] = "HeaderValue";
Le noyau .NET créera l'en-tête s'il n'existe pas.
Voici un exemple:
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;
}
Vous pouvez essayer 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();
vous pouvez également ajouter des en-têtes personnalisés, comme ceci:
.AddHeader("Custom-Header", "Header Value")
Depuis que je suis l'auteur, je suis toujours libre pour toutes les questions et l'aide.