2014-02-26 35 views
0

我正在開發一個持續的API項目。目前的問題是能夠從AtTask服務器上以AtTask服務器上存在的文件夾結構下載我的數據。我已經創建了文件夾創建工具,文檔,文檔文件夾和文檔版本之間的數據類型似乎很清楚。我對擴展不在文檔對象(我必須參考文檔VERSION)這一事實有點失望......但從設計角度我可以看到一些原因。如何從AtTask下載文檔?

我現在遇到的問題是我需要獲取文件內容。我最初通過API文檔獲取文檔內容的方式與文檔建議的上傳方式相同 - 通過句柄。不幸的是,document和docv似乎都不支持我訪問句柄,除非寫一個新文件。

因此,我留下了「下載URL」作爲剩餘的選項。如果我使用瀏覽器從API調用構建UI字符串,則會得到一個包含https://attaskURL/document/download?ID=xxxx(也可以獲取版本ID等)的URL。如果我將url粘貼到我登錄到AtTask用戶界面的瀏覽器中,它可以正常工作,我可以下載該文件。相反,如果我使用我的C#代碼來做到這一點,那麼我將登錄頁作爲流返回給我下載,而不是我的實際文件,因爲我沒有進行身份驗證。我已經嘗試創建一個網絡憑據,並附上用戶名和密碼的請求,但無濟於事。

我想有很多方法可以解決這個問題 - 一個簡單的方法就是找到一種方法,通過代碼「登錄」到下載站點(這似乎不是C#中常見的網絡憑證對象)或者找到一種方法通過API訪問文件內容。

欣賞你的想法!

回答

2

它看起來像你可以使用下載URL,如果你把一個會話ID在URL中。在獲取會話ID的細節在這裏(基本上只需要調用登錄和會話ID在JSON返回):

http://developers.attask.com/api-docs/#Authentication

然後塞進它在你的文件下載網址的結尾:

https://yourcompany.attask-ondemand.com/document/download?ID=xxxx&sessionID=abc1234

我給了這個快速測試,我可以訪問一個文檔。

+0

這是訣竅。當我沒有使用現有會話對其進行標記時,下載URL將我重定向到登錄頁面。我認爲這是一個不同的登錄管理系統,因爲響應代碼通過Fiddler不同,但您絕對正確併爲我節省了大量不必要的登錄電話。 :) – joefox97

+0

我嘗試使用sessionID,但沒有在我的情況下工作。仍然重定向到登錄頁面。任何想法可能是這裏的問題? –

0

如果您未使用SAML身份驗證,則可以使用downloadURL和sessionID。

我已經嘗試過這兩種方式,並使用SAML將您重定向到登錄頁面。