尝试发送包含正文内容的网络请求。重要的是我需要在post请求的正文中提供一些数据。我对如何执行此操作的理解是打开WebRequestStream,然后将字节写入其中,然后关闭它。这应该很简单。这是我的代码:
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()方法。
为什么这种方法不会产生任何身体?
答案 0 :(得分:0)
将“ContentType”和“ContentLength”标头添加到请求实例:
request.ContentType = "application/json"; // Or whatever you want
request.ContentLength = requestBody.Length;