探讨IdHTTP,关于访问网站时遇到“invalid argument to date encode”(100)

  • 主题发起人 主题发起人 dark_power
  • 开始时间 开始时间
D

dark_power

Unregistered / Unconfirmed
GUEST, unregistred user!
今天学习HTTP协议时,使用IdHTTP调试时遇到ConvertError“invalid argument to date encode”。一开始是一头雾水,虽然知道是无效的日期编码参数,但并不清楚是为什么。把自己的源代码里里外外折腾了半天,无果。随,优先上网查询是否有已解决的类似问题,结果出乎意料。。。很多人都遇到过,却没人解决过。。。因为,在非调试状态下,工作正常,所以有人说这时Delphi的bug,不用去管他。但至于是什么原因引起的,高手们也真的没有去理睬这个传说中的bug。我这人比较笨,也比较死心眼,不到黄河心不死。既然求助无门,那就自力更生。自己继续调试跟踪,结果发现是因为一些网站的页面没有失效期,也就是Expires="-1"时,在调试状态下会发生这个错误。独立运行时是不会识别这个错误的。继续跟踪调用堆栈,发现是在TIdHTTPResponse中获取头域后在格式化时因为被赋了空值导致GMTToLocalData函数调用一系列函数调整,最终EncodeDate在TryEncodeDate失败后返回False,这导致ConverError函数被调用,抛出EConvertError错误。非调试状态下为出现这个错误或许是因为这个错误被封闭在IdHTTPHeader单元中。调试状态下,调试器的优先级可能是太高了,都拦截下了。。。明天要靠驾照的科目1,没太多时间深入探究,希望有时间深入调研一下,更希望有朋友和我一起来探讨一下这类问题。虽然神坛在没落,但我觉得这不是片面的语言或工具本身的问题。Delphi做得太多太好了,以至于用户很少去真正的调试应用程序。现在几乎看到的都是嚷嚷着“为什么会这样?”“BugBug!”“质量低下,劣质产品”,又有多少程序员自身就是质量低下的劣质产品?我觉得包括我自己也不是啥质量优良的!如今看不到人讨论调试,也从没见过有人问调用堆栈是干嘛的?到底是我们在没落还是语言和工具在没落?
 
希望还有真正喜欢一起探讨学习Delphi的,而不仅仅是把她当成吃饭的工具。
 
[:)]支持下。编程语言的高级化也是傻瓜化的过程,这会增加易用性,带来普及也会造成很多用户知其然不知其所以然,以后发现真相会有更多的难度,需要更多的精力,这对于真的需要挖掘真相的人不是难事,但对于大部分不需要的人,也是喜闻乐见的。不要对程序员太过苛责,所有的岗位都一样,你不能要求每个人都有崇高的理想,报效社会的热情,大家的工作基本都是混碗饭吃而已。
 
我能感觉得到你的话已经很客气了,同时真诚的感谢你的回复。我从不否认辅助系统的高级化、智能化所带来的生产力的飞跃和生产效率的提高。只是觉得有些许哀伤,。。。也许是我太多愁善感了。。。正如你所说的,一切皆视现实而定。受教了,非常感谢。(我可是诚心诚意的感谢哦!不过没涉及技术问题不给分的啦!:)
 
后退
顶部