it-swarm.com.de

webanforderung im asp.net-Kern

Ich möchte eine Webanfrage in einem asp.net-Kernprojekt durchführen. Ich habe folgendes versucht, aber es scheint nicht, dass die Daten in der Anfrage gesendet werden:

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

Ich erhalte keine Fehlermeldung, die Anfrage wurde gesendet, aber sie scheint die Daten nicht mit der Anfrage zu senden. Ich kann auch nicht die Länge der Daten bei der Anfrage angeben. Ist das ein Kernproblem? (ps: Die Zugangsdaten werden korrekt gesendet)

Kann mir jemand helfen?

7
Wouter

Endlich gelöst. Es gab einen Fehler in meinem externen API-Code, bei dem ich die API-Anfrage gelöst habe. Der Code in meiner Frage funktioniert (wenn jemand ihn verwenden möchte). 

PS: Ich bearbeite den Code mit der Bemerkung von ycrumeyrolle

0
Wouter

Möglicherweise ist ein Synchronisierungskontextproblem aufgetreten. Versuchen Sie, auf asynchrone Methoden wie GetRequestStreamAsync() und GetResponseAsync() zu warten, anstatt die Result-Eigenschaft abzurufen.

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

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