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?
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
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();