Der Versuch, eine Web-Anfrage mit etwas Body-Inhalt zu senden. Der wichtige Teil ist, dass ich einige Daten im Körper der Postanforderung benötige. Ich verstehe, wie man das macht, indem man einen WebRequestStream öffnet und dann die Bytes schreibt und dann schließt. Dies soll einfach sein. Hier ist mein Code:C# HttpWebRequest.Write sendet keinen Inhalt
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create("http://localhost:50203/api/Values");//
request.Method = "POST";
byte[] requestBody = ASCIIEncoding.ASCII.GetBytes(HttpUtility.UrlEncode("grant_type=client_credentials"));
Stream requestBodyStream = request.GetRequestStream();
requestBodyStream.Write(requestBody, 0, requestBody.Length);
requestBodyStream.Flush();
requestBodyStream.Close();
WebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
myString = reader.ReadToEnd();
Aber die RequestBodyStream.Write-Methode sendet nichts im Körper. Ich weiß das, weil ich das serverseitige Programm am anderen Ende ausführe.
Ich habe auch versucht, dies mit einem StreamWriter statt einen Byte-Stream zu verwenden, und ich bekomme das gleiche Ergebnis. Egal wie ich es mache, es gibt keinen Inhalt im Körper.
Mein Verständnis ist, dass das Schließen der Stream ist, was die eigentlichen Daten sendet. Ich habe auch versucht, dem Stream eine Flush() -Methode hinzuzufügen.
Warum produziert diese Methode keinen Körper?
Ihr Endpunkt sieht aus wie asp.net Web-API. Leitet dieser Controller ein GET oder ist es ein POST-Endpunkt? – Crowcoder
@Crowcoder Wenn es kein POST-Endpunkt wäre, hätte er eine Ausnahme im Client erhalten. – yonisha
Mögliches Duplikat von [Festlegen der Körperdaten einer WebRequest] (http://stackoverflow.com/questions/4256136/setting-a-webrequests -body-data) – yonisha