2013-03-30 64 views
0

我使用Restlet2.0(java)構建存摺服務器。當我發送推送通知與PushToken的APN,我從服務器日誌消息「如果 - 修改 - 因爲(空)」:存摺更新標記:if-modified-since(null)

entity.getText() : {"logs":["[2013-03-31 00:18:29 +1100] Get pass task (pass type pass.xxxxxx.freehug, serial number ABC, if-modified-since (null); with web service url http://192.168.1.43:8080/passbook/restlet) encountered error: Server response was malformed (Missing response data)"]}

這響應網址爲LoggingResource類中定義的路由器匹配(4號線),但不是SerialNumbersPassWithDeviceResource類(第2行),其限定了passUpdatedSince = {標籤}參數將被捕獲爲最新pkpass比較:

router.attach("/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}/{serialNumber}", DeviceRegistrationResource.class); //1/4. Registration - POST/DELETE 
router.attach("/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}?passUpdatedSince={tag}", SerialNumbersPassWithDeviceResource.class); //2. SerialNumbers - GET 
router.attach("/v1/passes/{passTypeIdentifier}/{serialNumber}", LatestVersionPassResource.class); //3. LatestVersion - GET 
router.attach("/v1/log", LoggingResource.class); //5. Logging - POST 

所以我在哪裏可以設置更新標籤(passUpdatedSince = {標籤} ),我怎樣才能得到它在第二行以上的路由器?我的路由器設置爲獲取更新標記是否正確?

回答

2

passUpdatedSince={tag}值從最後一個成功的響應設置Web服務給了requsest:

https://{webServiceURL}/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier} 

您提供的lastUpdated在JSON字典針對上述請求的關鍵設置。值可以是任何你喜歡的,但最簡單的方法是使用時間戳。

if-modified-since值由與最後.pkpass束接收匹配passTypeIdentifierserialNumber發送的HTTP Last-Modified標頭集合。再次,您可以選擇在此標頭中發送的值。

您在上面提到的具體錯誤不是由於這兩者之一。 - ,然後

https://{webServiceURL}/v1/passes/{passTypeIdentifier}/{serialNumber} 

你可能想試試你的設備掛接到Xcode中,打開PassKit日誌(>開發者設置):這是由你的網絡服務不響應請求提供.pkpass束引起的在發送推送時監視設備的控制檯日誌。這可能會讓您更詳細地瞭解設備爲何將消息發送到您的Web服務日誌。