Foxtable(狐表)用户栏目专家坐堂 → 有个很奇怪的bug,HttpClient读取的字符串跟WebRequest的长度不同,导致读取到日期会谜之报错


  共有7926人关注过本帖树形打印复制链接

主题:有个很奇怪的bug,HttpClient读取的字符串跟WebRequest的长度不同,导致读取到日期会谜之报错

帅哥哟,离线,有人找我吗?
chen37280600
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:7959 威望:0 精华:4 注册:2017/12/31 14:53:00
有个很奇怪的bug,HttpClient读取的字符串跟WebRequest的长度不同,导致读取到日期会谜之报错  发帖心情 Post By:2022/7/18 15:44:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看


txt文档说明:这是我用Nginx部署的一个超简单的网站,直接访问可以下载文件,没什么特殊的编码,用于给客户端升级用。旧方法也是来自于论坛,一直都很稳升级,但是用HttpClient就谜之报错了
代码:
Dim url As String = "http://foxupdate.mbldt.com/MH0ClientUpdate/update.txt"

'1用旧方法读取udpate.txt
Dim req = System.Net.WebRequest.Create(url)
Dim pos = req.GetResponse
Dim stm As System.IO.Stream = pos.GetResponseStream()
Dim reader As New System.IO.StreamReader(stm)
Dim str As String = reader.ReadToEnd
pos.Close
stm.Close
reader.close
Output.Show("方法1读取:" & str)
Dim ary() As String = str.split("|")
Dim d As Date = ary(0)
Output.Show(d)

'2用新方法读取udpate.txt
Dim hc As New HttpClient(url)
hc.SkipError = True
Dim str2 As String = hc.GetData
Output.Show("方法2读取:" & str2)
Dim ary2() As String = str2.split("|")
Dim d2 As Date = ary2(0) '这里会出错,这个读取回来的字符串有毒
Output.Show(d2)


----------------------------------
千万别小看那个hc.GetData回来字符串,你就算单独拷贝放入string,再截取放入日期,也会出错。唯一方法是放到纯文本框,或者狐表帖子html编辑器模式,彻底干掉神秘东西,才会正常用,太奇怪了,官方一起来测试下?

就算把那个“有毒的字符串”,CDate()也一样不行的,有毒啊
[此贴子已经被作者于2022/7/18 15:52:49编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/18 16:04:00 [只看该作者]

可能是mime的原因。我反馈一下。

可以使用下载文件的方式
Dim hc As New HttpClient(url)
If hc.GetFile("D:\问题\123.txt") Then
    MessageBox.show("文件下载成功", "提示")
Else
    MessageBox.show("文件下载失败", "提示")
End If

Dim str2 As String = FileSys.ReadAllText("D:\问题\123.txt")

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2022/7/18 22:42:00 [只看该作者]

搞定,重新下载安装一下吧

 回到顶部
帅哥哟,离线,有人找我吗?
浙江仔
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1326 积分:9609 威望:0 精华:1 注册:2010/7/21 14:20:00
  发帖心情 Post By:2022/7/19 8:00:00 [只看该作者]

以下是引用狐狸爸爸在2022/7/18 22:42:00的发言:
搞定,重新下载安装一下吧

720版安装还是718,一直提示有新版可下载


 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/19 8:38:00 [只看该作者]

以下是引用浙江仔在2022/7/19 8:00:00的发言:

720版安装还是718,一直提示有新版可下载

重新下载

 回到顶部
帅哥哟,离线,有人找我吗?
肥肥记
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:361 积分:3027 威望:0 精华:0 注册:2016/9/15 11:50:00
  发帖心情 Post By:2022/9/5 22:45:00 [只看该作者]

我以前做的下载升级是这样优化的,        Dim d As Date =System.Text.RegularExpressions.Regex.Match(ary(0),"[0-9\-]+").ToString()

 回到顶部