0
votes

C # - Définissez les en-têtes httpclient pour publier des données sur Azure Repos API

J'essaie de poster des données à une API de repos azur. J'ai une demande définie dans Postman qui fonctionne. Maintenant, dans mon code C #, je souhaite utiliser le httpclient code> au lieu des bibliothèques d'assistance. Dans une tentative de faire cela, j'ai actuellement: xxx pré>

lorsque j'exécute cela, un invalidoPerationException code> est lancé qui dit: P>

Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.


1 commentaires

4 Réponses :


2
votes

Le type de contenu est un en-tête du contenu, non de la demande, c'est pourquoi cela échoue. Vous pouvez également définir le type de contenu lors de la création du contenu demandé lui-même (notez que l'extrait de code ajoute «Application / JSON» en deux places-pour l'acceptation et les en-têtes de type de contenu)

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT


1 commentaires

Vous avez tort du type Type de contenu utilisé pour les demandes également - "Dans les demandes (telles que Post ou Met), le client indique au serveur quel type de données est réellement envoyé." . Le Type de contenu -header est passé par stringcontent - voir code source .



0
votes

Avez-vous vu cela TUTO ?

init httpclient xxx

post votre objet xxx


0 commentaires

0
votes

Utilisez ceci si vous souhaitez ajouter des en-têtes

 var apiClient = new HttpClient()
                    {
                      BaseAddress = new Uri(apiBaseURL)
                    };

var request = new HttpRequestMessage(HttpMethod.Post, "/api/controller/method");
request.Headers.Add("Accept", "application/json");
request.Headers.Add("api-key", mykey);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");

var response = apiClient.SendAsync(request).Result;
response.EnsureSuccessStatusCode();


2 commentaires

Merci. C'était l'approche la plus facile pour mes besoins


Heureux d'avoir aidé.



0
votes

Essayez ceci:

content.Headers.ContentType = new MediaTypeHeaderValue("application/json");


0 commentaires