现在在维护一个.net2.0的项目,运行平台Windows xp。(.net从4.5开始才支持tls1.2。而.net4.5最低的系统要求是Windows vista)
程序需要通过tls1.2调用一个发送短信验证码的接口,经过百般查询,也没有找到能用的.net2.0环境下能用的框架。无奈只能通过tcp手动模拟https请求。
在开发过程中,发现接收到的http响应的格式大致如下
HTTP/1.1 200 Server: nginx/1.10.3 Connection: keep-alive Date: Sat, 21 Dec 2019 09:20:15 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked 51 {"errMsg":"发送失败:每小时最多能发送5条短信。","errorCode":"1"} 0
其他的我都能理解,有没有人知道消息体中开始的51和结尾的0是什么,有没有特殊含义?
有大神在吗?快帮帮小弟吧,感激不尽!
由于你传输编码是chunked方式。所以需要一个值表示body的长度,51就是body的内容的长度,0是结尾。
参考资料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Transfer-Encoding
开始的时候我也这里理解,后来发现下面的例子对不上,比如:
29
{"errMsg":"发送成功","errorCode":"0"}
0
消息体的长度明显大于29(不算29和0,长度应该是33)
@龙葛格: 16进制的,表示的是字节的长度,不是字符的个数。
@blackheart: 好的。谢谢