2014-02-26 36 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将您重定向到登录页面。