Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?

时间:2022-03-13 05:06:31
这段时间用C#窗体做了个 Socket 和 HttpWebRequest 获取HTML页面,速度上Socket确实比HttpWebRequest快不少,所以想采用Socket获取HTML。问题来了报文中如果 Transfer-Encoding: chunked  的时候,获取的HTML页面代码中出现了,多余的“数据包字符总数”,就是从一开头就会有十六进制的数据包“字符总数”,如果HTML页面总字符数更长是会分多次收到数据包,但每输出一段数据包都会同时输出包的十六进制“总字符数”,请问高手怎么删除或过滤掉这个“总字符数”?

Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?
Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?
Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?

10 个解决方案

#1


求指点,只要不输出这个字符总数就行。。 Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?

#2


replace 替换成空格

#3


每次接收到的数据包“字符总数”不是固定的,想用正则匹配来着,但是有时候这个“字符总数”会出现在汉字两个字节中间,那局部一行的汉字就成了乱码,也无法过滤掉。愁,比较牛的正则也行,求指点

#4


Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?
就是想把那个“字符总数”不让他输出,就是从源头上屏蔽,怎么做到?

#5


‘过滤’ 不是好的处理方法。既然是标准协议,就要按照标准协议的方式去做。

Transfer-Encoding: chunked协议可参考:
http://zh.wikipedia.org/wiki/%E5%88%86%E5%9D%97%E4%BC%A0%E8%BE%93%E7%BC%96%E7%A0%81

#6


引用 5 楼 Forty2 的回复:
‘过滤’ 不是好的处理方法。既然是标准协议,就要按照标准协议的方式去做。

Transfer-Encoding: chunked协议可参考:
http://zh.wikipedia.org/wiki/%E5%88%86%E5%9D%97%E4%BC%A0%E8%BE%93%E7%BC%96%E7%A0%81
就是要把那个块的字节总数屏蔽掉,如果要是只有英文数字符号的话过滤没问题。但是里面有中文,如果一个块的结尾正好是半个字节的汉字(一个汉字占两个字节),那汉字就乱码了。求解决

#7


引用 3 楼 qq_22363821 的回复:
每次接收到的数据包“字符总数”不是固定的,想用正则匹配来着,但是有时候这个“字符总数”会出现在汉字两个字节中间,那局部一行的汉字就成了乱码,也无法过滤掉。愁,比较牛的正则也行,求指点


你认为“字符数”是人家随便插入任意位置的吗?你不了解一下字符数的规则吗?

建议你花点钱找别人给你处理掉它吧。

#8


如果你还是这样靠瞎猜来写程序,那么你最好收回“速度上Socket确实比HttpWebRequest快不少”这种论调。你都做不了正确的事,要“快”有什么用呢?

在明眼人看来,反而是你使用 HttpWebRequest 比什么都更实在。

#9


引用 8 楼 sp1234 的回复:
如果你还是这样靠瞎猜来写程序,那么你最好收回“速度上Socket确实比HttpWebRequest快不少”这种论调。你都做不了正确的事,要“快”有什么用呢?

在明眼人看来,反而是你使用 HttpWebRequest 比什么都更实在。

不懂别BB

#10


该回复于2015-10-21 15:37:19被管理员删除

#1


求指点,只要不输出这个字符总数就行。。 Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?

#2


replace 替换成空格

#3


每次接收到的数据包“字符总数”不是固定的,想用正则匹配来着,但是有时候这个“字符总数”会出现在汉字两个字节中间,那局部一行的汉字就成了乱码,也无法过滤掉。愁,比较牛的正则也行,求指点

#4


Socket获取HTML时,Transfer-Encoding: chunked 获取的HTML出现多余的数据包字符总数,怎么删除或过滤掉?
就是想把那个“字符总数”不让他输出,就是从源头上屏蔽,怎么做到?

#5


‘过滤’ 不是好的处理方法。既然是标准协议,就要按照标准协议的方式去做。

Transfer-Encoding: chunked协议可参考:
http://zh.wikipedia.org/wiki/%E5%88%86%E5%9D%97%E4%BC%A0%E8%BE%93%E7%BC%96%E7%A0%81

#6


引用 5 楼 Forty2 的回复:
‘过滤’ 不是好的处理方法。既然是标准协议,就要按照标准协议的方式去做。

Transfer-Encoding: chunked协议可参考:
http://zh.wikipedia.org/wiki/%E5%88%86%E5%9D%97%E4%BC%A0%E8%BE%93%E7%BC%96%E7%A0%81
就是要把那个块的字节总数屏蔽掉,如果要是只有英文数字符号的话过滤没问题。但是里面有中文,如果一个块的结尾正好是半个字节的汉字(一个汉字占两个字节),那汉字就乱码了。求解决

#7


引用 3 楼 qq_22363821 的回复:
每次接收到的数据包“字符总数”不是固定的,想用正则匹配来着,但是有时候这个“字符总数”会出现在汉字两个字节中间,那局部一行的汉字就成了乱码,也无法过滤掉。愁,比较牛的正则也行,求指点


你认为“字符数”是人家随便插入任意位置的吗?你不了解一下字符数的规则吗?

建议你花点钱找别人给你处理掉它吧。

#8


如果你还是这样靠瞎猜来写程序,那么你最好收回“速度上Socket确实比HttpWebRequest快不少”这种论调。你都做不了正确的事,要“快”有什么用呢?

在明眼人看来,反而是你使用 HttpWebRequest 比什么都更实在。

#9


引用 8 楼 sp1234 的回复:
如果你还是这样靠瞎猜来写程序,那么你最好收回“速度上Socket确实比HttpWebRequest快不少”这种论调。你都做不了正确的事,要“快”有什么用呢?

在明眼人看来,反而是你使用 HttpWebRequest 比什么都更实在。

不懂别BB

#10


该回复于2015-10-21 15:37:19被管理员删除