J'ai un service Web API frontal léger qui effectue un prétraitement sur les données reçues, puis envoie les données à mon service Web API principal à l'aide de HttpClient.

Il existe des cas complexes où une requête contient des données en plusieurs parties avec JSON et des fichiers, et je ne veux pas du tout les analyser dans le frontend. Le backend fera le travail.

Donc, j'aimerais prendre la demande "telle quelle" - aussi brute que possible (sans me soucier de son contenu et si elle est en plusieurs parties ou non) et la transmettre simplement à l'API backend.

J'ai essayé ce qui suit:

var msg = new HttpRequestMessage(HttpMethod.Post, resourceUrl);
msg.Content = new StreamContent(request.Body);
var apiResponse = await _httpClient.SendAsync(msg);

Mais le service Web principal reçoit un corps de requête vide de longueur 0.

Comment transférer l'intégralité du corps de la requête sans avoir à l'analyser et à réassembler un nouveau corps de requête ?

1
JustAMartin 4 févr. 2020 à 18:43

1 réponse

Meilleure réponse

Vous devez définir msg.Content.ContentLength pour que cela fonctionne correctement. C'est également une bonne idée de copier ContentType et d'autres en-têtes de contenu de la demande dans msg.Content, afin que votre service backend sache comment l'analyser.

1
Anton Tykhyy 4 févr. 2020 à 16:54