开发者社区> 问答> 正文

关于json传输的疑问:报错

  突然有个疑惑,我们现在的系统有很多时候需要从别的服务器抓取json结构的数据回来。但是因为某些服务器的网络不稳定可能出现传输期间断开的问题。我想服务器在接收了部分json数据但是没全部接收完的情况下网络断开了,这样接收到的json结构应该是不完整的吧,json_decode应该也无效才对,等到网络连接以后再重新抓取就好,不用考虑抓取回来数据的完整性。这样会不会有问题?

展开
收起
kun坤 2020-06-06 18:28:29 479 0
1 条回答
写回答
取消 提交回答
  • 引用来自“MUTEX”的答案

    TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、 可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。
    这个可靠是建立在校验上的吧?!我刚刚试了一下wget一个文件,http是先返回200的状态然后再开始文件的传输。当然文件的大小已经包含在返回的头,估计通过这个检验下载是否完成。 我自己也越问越含糊了,对http不熟悉。总结一下:当http返回200,是否能保证我的json数据是完整的?!
    ######回复 @MUTEX : 结了吧,我大概知道问题不在http协议上了,这个要估计要看具体函数的实现。谢谢你们的回答!######回复 @MUTEX : 但数据的完整性应该是客户端检测的吧?!######所谓可靠,是指出错了会告诉你出错状态的。###### 没人回答,自己顶一下!
    ######

    会有这样情况?第一次听说,如果你在网上银行转账,本来转1000,结果在传输json 时,网络中断了了少传个0是不是异曲同工之妙?

    服务器要么返回200表示成功!网络中断 不就是 time out 吗? 程序还会先给一点数据你用吧?

    ######你学文科的啊?程序很死的,要么成功,要么失败
    ######

    引用来自“hlevel”的答案

    会有这样情况?第一次听说,如果你在网上银行转账,本来转1000,结果在传输json 时,网络中断了了少传个0是不是异曲同工之妙?

    服务器要么返回200表示成功!网络中断 不就是 time out 吗? 程序还会先给一点数据你用吧?

    嗯,说得有道理。返回200的时候数据已经准备好了,超时应该就会跳过。看来是我想多了
    ######

    引用来自“hlevel”的答案

    你学文科的啊?程序很死的,要么成功,要么失败
    那么我还想问,如果我下载一个大文件,开始下载的时候服务器的返回状态,下载结束以后的状态和中断以后的状态这个要怎么判断?!
    ######TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、 可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。######这个应该不是JSON的问题,是TCP传输的问题!######HTTP的话,HEAD 里面的Content-Length可以作为数据完整性的校验,不过HTTP貌似没规定Content-Length必须准确。如果确实需要使用HTTP来实现,可以考虑在Head或者Content里面自行约定一些校验用的字段。严格的情况下,Content-Length与实际得到的Content长度不一致,我们就认为这个Http事务请求是失败的。
    2020-06-06 18:28:44
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载