gpt4 book ai didi

c# - 为什么单声道有时会截断 http 下载?

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:26 25 4
gpt4 key购买 nike

我使用以下代码下载文本(json):

var request = WebRequest.Create(url);
using (var response = request.GetResponse())
{
string charset = null;
var httpResponse = response as HttpWebResponse;
if (httpResponse != null)
{
if (httpResponse.StatusCode != HttpStatusCode.OK)
{
throw new System.Net.WebException("Ststus code was: " + httpResponse.StatusCode);
}
charset = httpResponse.CharacterSet;
}
Encoding enc = charset != null ? Encoding.GetEncoding(charset) : null;
using (var reader = new StreamReader(response.GetResponseStream(), enc, true))
{
return reader.ReadToEnd();
}
}

在 Windows (.net) 上它工作正常。在 Linux(Mono 运行时)上,它有时会返回截断的数据:json 解析器崩溃,因为找不到字符串的结束分隔符和类似错误。这不是解析器的问题:我尝试了两种不同的方法。这似乎不是编码问题,因为对于完全相同的下载数据,它有时有效,有时无效。

为什么单声道会有这种行为,我该如何避免这个问题?

编辑:为了调试目的,我添加了一个控制台打印。直接来自上述代码的字符串已明确截断。

Edit2:这是我如何使用结果:

string json = DownloadTextFile(url);
dynamic obj = Json.Decode(json);//Decoding fails here, because string is truncated.

最佳答案

当我让程序在网络连接良好的服务器上运行时,问题发生的频率要低得多。 (下载几千次之后,而不是几百次之后)。这足以满足我的目的。

检查内容长度没有多大帮助,因为它经常是 -1。令人遗憾的是,网络内容在单声道中的实现如此糟糕。 (在 .net 上,即使连接不好,相同的代码也能完美运行。)

关于c# - 为什么单声道有时会截断 http 下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27931205/

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