Попытка отправить веб-запрос с некоторым содержимым тела. Важная часть состоит в том, что мне нужны некоторые данные в теле почтового запроса. Мое понимание того, как это сделать, - открыть WebRequestStream, а затем записать в него байты, а затем закрыть его. Это должно быть просто. Вот мой код:C# HttpWebRequest.Write не отправляет контент
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();
Но метод RequestBodyStream.Write не отправляет ничего в тело. Я знаю это, потому что я запускаю серверную программу на другом конце.
Я также попытался сделать это с помощью StreamWriter вместо использования байтового потока, и получаю тот же результат. Независимо от того, как я это делаю, в теле нет содержания.
Я понимаю, что закрытие потока - это то, что передает фактические данные. Я также попытался добавить к потоку метод Flush().
Почему этот метод не производит никакого тела?
Ваша конечная точка выглядит asp.net Web API. Этот маршрут контроллера GET или это конечная точка POST? – Crowcoder
@Crowcoder Если бы это не была конечная точка POST, у него получилось бы исключение в клиенте – yonisha
Возможный дубликат [Настройка данных тела WebRequest] (http://stackoverflow.com/questions/4256136/setting-a-webrequests -body-data) – yonisha