C# HttpWebRequest.Write 不发送内容



尝试发送包含某些正文内容的 Web 请求。重要的部分是我需要在帖子请求的正文中提供一些数据。我对如何做到这一点的理解是打开一个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() 方法添加到流中。

为什么这种方法不产生任何身体?

将"ContentType"和"ContentLength"标头添加到请求实例:

request.ContentType = "application/json"; // Or whatever you want
request.ContentLength = requestBody.Length;

相关内容

  • 没有找到相关文章

最新更新