web-dev-qa-db-fra.com

demande Web dans le noyau asp.net

Je souhaite effectuer une demande Web dans un projet central asp.net. J'ai essayé ce qui suit mais il ne semble pas envoyer les données dans la demande:

using System.Net;

...

//encoder
UTF8Encoding enc = new UTF8Encoding();

//data
string data = "[\"some.data\"]";

//Create request
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.Credentials = new NetworkCredential(user, secret);

//Set data in request
Stream dataStream = await request.GetRequestStreamAsync();
dataStream.Write(enc.GetBytes(data), 0, data.Length); 


//Get the response
WebResponse wr = await request.GetResponseAsync();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();

Je ne reçois pas d'erreur, la demande a été envoyée, mais il ne semble pas envoyer les données avec la demande. Je ne peux pas non plus donner la longueur des données avec la demande. Est-ce un problème fondamental? (ps: les identifiants sont envoyés correctement)

Quelqu'un peut-il m'aider?

7
Wouter

Finalement résolu. Leur était un bug dans mon code api externe où j'ai résolu la demande de l'API. Le code dans ma question fonctionne (si quelqu'un veut l'utiliser). 

PS: je modifie le code avec la remarque de ycrumeyrolle

0
Wouter

Vous pouvez être confronté à un problème de contexte de synchronisation . Essayez d'attendre les méthodes asynchrones telles que GetRequestStreamAsync() et GetResponseAsync() au lieu d'obtenir la propriété Result.

//Set data in request
Stream dataStream = await request.GetRequestStreamAsync();

//Get the response
WebResponse wr = await request.GetResponseAsync();
1
ycrumeyrolle