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
修改后系统源码放到自己项目的目录下,然后编译自己的项目就可以了。