gpt4 book ai didi

c# WebResponse 内容长度限制

转载 作者:行者123 更新时间:2023-11-30 22:04:56 26 4
gpt4 key购买 nike

我正在尝试使用 C# 和 WebRequest 从 Internet 获取一个大文件。到目前为止,我拥有的所有其他东西都工作正常,但似乎我得到的响应中间的某些部分被删除了。我尝试打印出 response.ContentLengthgetResponseContent(response).Length 我得到了 -180000分别。 WebResponse 的长度是否有限制,或者是有问题的辅助函数?我如何获得完整内容?

这是我的 getResponseContent 函数:

    private static String getResponseContent(HttpWebResponse response)
{
Stream responseStream = response.GetResponseStream();

byte[] buffer = new byte[1000];
String ret = "";

while (responseStream.Read(buffer, 0, 1000) > 0)
ret += (System.Text.Encoding.Default.GetString(buffer));

return ret;
}

感谢@Neolisk,我重写了我的 getResponseContent 以使用 StreamReader 类,它像魔术一样工作。这是代码:

    private static String getResponseContent(HttpWebResponse response)
{
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream);
return sr.ReadToEnd();
}

但是,仍然有人可以解释为什么响应 header 中的 ContentLength 是 -1 而不是一些有意义的长度吗?

最佳答案

在不知道您收到的实际数据是什么的情况下,很难确定发生了什么。

但是 - response.ContentLength 是来自 HTTP 响应的 header 值,它是响应的长度以字节为单位

表示一个字符串中有多少个字符不一定是同一件事——许多 unicode 类型编码每个字符都超过一个字节。

使用将二进制数据放入 byte[] 缓冲区的 responseStream.Read 重载,根据实际编码(在 header 中设置)创建解码器并从那里解码您的字符串。

关于c# WebResponse 内容长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24740606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com