草庐IT

c# - 错误 (HttpWebRequest) : Bytes to be written to the stream exceed the Content-Length bytes size specified

coder 2024-06-01 原文

我似乎无法弄清楚为什么我不断收到以下错误:

Bytes to be written to the stream exceed the Content-Length bytes size specified.

在以下行:

writeStream.Write(bytes, 0, bytes.Length);

这是一个 Windows 窗体项目。如果有人知道这里发生了什么,我肯定会欠你一个。

    private void Post()
    {


        HttpWebRequest request = null;
        Uri uri = new Uri("xxxxx");
        request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        XmlDocument doc = new XmlDocument();
        doc.Load("XMLFile1.xml");
        request.ContentLength = doc.InnerXml.Length;
        using (Stream writeStream = request.GetRequestStream())
        {
            UTF8Encoding encoding = new UTF8Encoding();
            byte[] bytes = encoding.GetBytes(doc.InnerXml);
            writeStream.Write(bytes, 0, bytes.Length);
        }
        string result = string.Empty;

        request.ProtocolVersion = System.Net.HttpVersion.Version11;
        request.KeepAlive = false;
        try
        {
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (System.IO.StreamReader readStream = new System.IO.StreamReader(responseStream, Encoding.UTF8))
                    {
                        result = readStream.ReadToEnd();
                    }
                }
            }
        }
        catch (Exception exp)
        {
            // MessageBox.Show(exp.Message);
        }
    }

最佳答案

三种可能的选择

  • 按照 answer from @rene 中的说明修复 ContentLength

  • 不设置ContentLength,HttpWebRequest正在缓存数据,自动设置ContentLength

  • 将 SendChunked 属性设置为 true,并且不设置 ContentLength。请求被编码发送到网络服务器。 (需要 HTTP 1.1 并且必须得到网络服务器的支持)

代码:

...
request.SendChunked = true;
using (Stream writeStream = request.GetRequestStream())
{ ... }

关于c# - 错误 (HttpWebRequest) : Bytes to be written to the stream exceed the Content-Length bytes size specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32537219/

有关c# - 错误 (HttpWebRequest) : Bytes to be written to the stream exceed the Content-Length bytes size specified的更多相关文章

随机推荐