[Bug]官方HttpClient的一处Bug及解决办法

Delphi/C++ Builder 新增加的 TNetHttpClient/THttpClient 在通讯时,对 304 的错误处理不正确,304 在 HTTP 协议的标准是未变更,但在 System.Net.HttpClient.Android/Windows/Mac 里,都错误的当成了重定向处理。在官方的修订出来之前,我们需要在 TWinHTTPClient/TAndroidHTTPClient 的 DoProcessStatus 里,TMacConnectionDataDelegate 的 connectionWillSendRequestRedirectResponse 里,找到类似下面的一行代码:

if xxx.HandleRedirects and (LStatus >= 300) and (LStatus < 400)  then

修改它,将 304 排除掉即可:

if xxxClient.HandleRedirects and (LStatus >= 300) and (LStatus < 400)  and (LStatus<>304) then

修改后系统源码放到自己项目的目录下,然后编译自己的项目就可以了。

分享到: