【发布时间】:2017-10-26 10:48:43
【问题描述】:
由于时间错误,我无法将 XML 文件发送到数据库。项目的简短摘要:
我正在创建一个通过 prestashop 网络服务检索、发送和更新数据的应用程序。该应用程序是现有 prestashop 应用程序的扩展。使用 web 服务,所有数据都通过 XML 文档传递。
我有以下两种情况。
1.向数据库发送新值:
当我向数据库发送一个新值时,假设是一个新产品。一切都以一种奇怪的方式正常工作。 HTTP响应头如下:
HTTP/1.1 200 OKDate: Thu, 26 Oct 2017 10:35:21 GMTServer: Apache/2Access-Time: 1509014121X-Powered-By: PrestaShop WebservicePSWS-Version: 1.7.2.4Execution-Time: 0.026Content-Sha1: SomeStuff; HttpOnlyUpgrade: h2,h2cConnection: UpgradeCache-Control: max-age=2592000Expires: Sat, 25 Nov 2017 10:35:21 GMTVary: Accept-Encoding,User-AgentTransfer-Encoding: chunkedContent-Type: text/xml;charset=utf-8
但实际时间是 2 小时后。仍然正确发送 XML 文档,将值添加到数据库中,并且 time_add 和 time_upd 从服务器获取正确的时间,在这种情况下:2 小时后:12:35:41。
所以发送一个新值是没有问题的。
2。更新值(这是出现问题的地方)
更新值时,我将首先选择正确的数据库行。然后我会用一些新值更新这些值。
一切正常,表单发送值,HTTP 标头捕获它们并尝试通过 XML 发送部分发送值。 但是 HTTP 响应标头再次检索 2 小时前的时间,在这种情况下会显示以下错误:
HTTP RESPONSE HEADER
HTTP/1.1 404 Not Found
Date: Thu, 26 Oct 2017 10:40:52 GMT
Server: Apache/2
X-Powered-By: PHP/7.0.23
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Link: <https://MySite.nl/wp-json/>; rel="https://api.w.org/"
Upgrade: h2,h2c
Connection: Upgrade
Vary: Accept-Encoding,User-Agent
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
XML 发送确实尝试发送,但由于 dateTime 错误而被拒绝。这就是它变得奇怪的地方,因为我检查了服务器时间并且那里没有问题。服务器时间是正确的 12:40:...
所以我的 HTTP 标头比服务器时间晚了 2 小时。
所以我的问题是:
是否有任何解决方案或其他人有同样的问题?
我希望我的问题描述清楚,如果不是,请告诉我,我会更新问题。
一如既往,提前致谢!
【问题讨论】:
-
真的是两个小时后吗?还是晚了两个时区?
-
@Quentin 可能是其中任何一个,服务器中为欧洲阿姆斯特丹设置的时区,从服务器请求时间给出正确的时间。但是 HTTP 没有得到那个时间,并告诉我它早了 2 小时,正好是 2 小时到第二个......
-
Date: Thu, 26 Oct 2017 10:40:52 GMT— 这是明确的格林威治标准时间,比阿姆斯特丹当地时间早两个小时。 -
@Quentin 好的,所以两个不同的时区,这已经是什么了(谢谢:))但是这样的事情怎么会发生呢??
-
@Quentin 我发现了问题,在API连接的设置中说明:设置如下:
header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");如何将其更改为gmt+2(阿姆斯特丹)?
标签: php xml web-services http-headers prestashop