2014-01-14 93 views
1

我正在使用非常令人沮喪的Bing Ads Api(SOAP),並且我成功執行了大部分我需要的SOAP請求,但最後一個給了我麻煩。在Ruby/Rails中下載,解壓縮和解析文件

該團隊告訴我要獲得廣告系列的統計信息(點擊次數,展示次數,轉化次數等),我需要生成一份報告(將其傳遞給參數),然後從報告中獲取報告ID和「輪詢「該報告與另一個SOAP請求,這會產生一個zip文件的下載URL。

我已經成功地完成上述所有和下載網址(這是隻有5分鐘爲好)看起來是這樣的:

https://download.api.bingads.microsoft.com/ReportDownload/Download.aspx?q=k471B%2fhtf62jwhaelHhu0EqMSfWCvWSpOOBRu76%2bUC%2bgATLEobf%2bMYiVKX0CBOr52d95ViPXJeKbvAbnb%2bSK%2bGumYlSYQT80kTtt5waa5z%2fmbeXT%2fPFqde95DFR1%2b4yQgekl5T6gKipbMFcQJOn5aGYmtI1ALcREIwJRA%2bi%2b3jOE55Cl69TAzBOUWvB73NAKX6S0Y7zF%2bERnSu7TJnJfmqHopWihGtkeMzoqqwsJVgVDEKz84RrPPaDOs2pxg3qE%2bLSrEwu2cpa7bP%2f9t%2fjUVtIgiZMbMjzSf73VnAUSpYNz

當我去那個URL,它開始下載一個ZIP文件,一旦解壓縮,確實包含我需要解析的XML報告給我創建的Web應用程序的用戶。

我的問題是 - 在應用程序中一致地獲取該XML的最佳方式是什麼?對於應用程序來說,這似乎是一種艱難的方法,考慮到每次用戶加載Bing頁面或更改日期範圍時都必須進行上述操作,但它們告訴我它是實現此目的的唯一方法。

我一直在向下的路徑是使用HTTParty獲取報告,然後使用RubyZip解壓縮(由於未定義轉換錯誤問題而未成功),但我不確定要從那裏執行哪些操作。存儲在數據庫中(可能是暫時的)?

任何幫助將不勝感激。

回答

0

如果沒有更好的方法來使用API​​,請緩存結果(在數據庫或文件系統中),並使用將定期運行的rake任務來刷新數據。如果您這樣做,請考慮爲用戶添加一個選項以請求立即刷新。

+0

感謝您的迴應!我認爲你的意思是緩存zip文件的結果是正確的?你能提出一個下載/解壓縮這個文件的好方法嗎? – macoughl

0

使用後臺任務下載壓縮文件並進行處理,可以使用類似於delayed_job或resque的內容來啓動帶有該URL的作業。