2012-09-10 99 views
1

綜合亞馬遜產品周密API與我自己的應用程序,它工作正常,但問題是:亞馬遜產品廣告API,時間戳問題

要訪問我們需要時間戳記的API,當我把代碼在服務器上(這是在其他國家),並使用服務器的時間戳,然後API在XML中給出以下錯誤:「請求已過期。時間戳日期是XXXX-XX-XXTXX:XX:XXZ」,

但是當我輸入我自己的時區,然後開始正常工作。爲什麼API在客戶端時間戳方面工作正常,另一方面,所有與API相關的計算都在服務器端發生。

我參考了Amazon API的以下開發者文檔,但沒有提到avial。 Product Advertising API Developer GuideAPI Version 2011-08-01

回答

2

我參考了亞馬遜API的以下開發者文檔,但沒有avial。產品廣告API開發人員指南API版本2011-08-01

哼,本文檔明確指出Timestamp參數必須以通用時間(UTC)表示;您不能發送本地時間,除非偶然(您的個人位置可能屬於這種情況)碰巧與UTC的時間相同:

「•時間戳 - 必需。沒有默認值。您在請求中使用的時間戳必須是一個 dateTime對象,包含完整日期加上小時,分鐘和秒(有關更多信息,請參閱 至http://www.w3.org/TR/NOTE-datetime).This是由ISO 8601定義的格式的固定長度子集,表示爲(格林威治標準時間):YYYY-MM-DDThh:mm:ssZ(其中T和Z是文字) 重要 如果您使用的是.NET,則不得發送過分具體的時間戳,這是由於對如何解釋應該刪除額外的時間精度避免過於具體時間 郵票,手動構造datetime對象不超過精確到毫秒以上。」

+1

感謝您的回覆。是!我知道所有這些,但具有諷刺意味的是,我的位置是+5(UTC/GMT),服務器位置是-6(UTC/GMT)。但它在+5(UTC/GMT)上正常工作。當我將+11小時的服務器時間戳記(當然成爲我自己的本地時間戳記)時,它工作正常,並在所有其他時間設置上出現錯誤。不知何故,目前我通過將+11小時添加到服務器時間戳進行管理。但它似乎很奇怪。不是嗎? –

+0

是的,這很漂亮。你使用哪種語言?我敢打賭,它基本上像所有其他人一樣,具有將本地時間轉換爲utc的功能,以便您不必在您的工作站和服務器之間做任何特定/不同的事情。我在法國,我的服務器在美國西海岸,我沒有任何具體的事情要做...... – BernardG

+0

我正在使用ColdFusion。這裏是我用11個小時來做​​的語法:' '。 –

2

var currentdate = new Date(); currentdate.toISOString();

這是我得到了產品廣告的API時間戳。

+0

這是最好的 - 當不包括毫秒時,我被拒絕 - '''toISOString'''包含毫秒自動。 –