【发布时间】:2018-08-21 14:06:52
【问题描述】:
我正在 Unity3d 中创建一个需要通过 PHP 文件从数据库下载图像的应用程序, 由于各种原因,我决定使用 System.Net.WebClient 而不是统一类 WWW,经过多次尝试,它可以使用此代码。
idEvent = 3; //exemple
string responsefromserver = "";
Uri URL = new Uri("http://******.000webhostapp.com/ImEvents.php");
WebClient webClient = new WebClient();
NameValueCollection formData = new NameValueCollection();
formData["selectedId"] = idEvent;
webClient.DownloadProgressChanged += (object sender, DownloadProgressChangedEventArgs e) =>
{
Debug.Log ( string.Format(" downloaded {0} of {1} bytes.",
e.BytesReceived,
bytes //e.TotalBytesToDownload returns always -1 so this value is given by a variable
));
};
webClient.UploadValuesCompleted += (object sender, UploadValuesCompletedEventArgs e) =>
{
responsefromserver = Encoding.UTF8.GetString(e.Result);
webClient.Dispose();
};
webClient.UploadValuesAsync(URL, "POST", formData);
e.TotalBytesToDownload 总是返回 -1,但经过各种研究后我注意到这是由于其他因素造成的,因为这是我可以通过另一种方式恢复的信息,这对我来说并不重要...... 问题是 e.BytesRecived 立即上升到大约 3000-4000 字节的数字,然后 RETURN BACK 并给我所有在 1444 和 1452 字节之间振荡的值......
这没有任何意义!!!
这里是一个日志示例
downloaded 6828 of 39680 bytes.
downloaded 2644 of 39680 bytes.
downloaded 1452 of 39680 bytes.
downloaded 1447 of 39680 bytes.
downloaded 1444 of 39680 bytes.
downloaded 1452 of 39680 bytes.
ecc...
所以我的问题是:
为什么 e.BytesReceived 没有给我接收的实际字节数(它应该只增加到文件大小,而不是在 1444 和1452 字节)
(如果很重要,这段代码在 IEnumerator 函数内...)
我为我的英语道歉
【问题讨论】:
-
你有什么问题?
-
@CodeCaster 我的问题是:为什么 e.BytesReceived 没有给我接收到的实际字节数(应该只增加到文件大小,而不是在 1444 和 1452 字节之间波动)
-
自上次触发事件以来接收到的字节数。
-
“我决定使用 System.Net.WebClient 而不是统一类 WWW” 为什么?我推荐的 WebClient 实例很少......为什么不使用
WWW? -
@Programmer 我注意到使用 WebClient,我可以每 100KB 下载大约 0.1 秒的图像
标签: c# unity3d download webclient