web-dev-qa-db-fra.com

Comment ajouter des valeurs d'en-tête à HttpWebRequest dans .Net Core

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

10
simon perera

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.

11
Mark Malo

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;
}
4
Fabricio Koch

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.

0
Nikolay Hristov