在TFS中,如何访问ReportServer URL以获取每日scrum burndown图表的jpeg?

在TFS中,如何访问ReportServer URL以获取每日scrum burndown图表的jpeg?,tfs,Tfs,我想访问TFS服务器,定期下载动态生成的“Scrum Burndown图表”,以便在单独的报告(即pdf)中重复使用它 是的,有很多报道 如何在服务器中找到要下载的正确URL,以及如何避免权限问题?这是我自己回答的问题 过程概要 使用HTTP代理嗅探器确定URL的格式-请参见下文 使用py ntlm,连接到TFS服务器,使用已知的URL格式获取“完整”报告页面 解析报告页面以获取图像url,通过py-ntlm再次下载并存储 没有直接的URL,即我不能请求reportserver/myteam

我想访问TFS服务器,定期下载动态生成的“Scrum Burndown图表”,以便在单独的报告(即pdf)中重复使用它 是的,有很多报道


如何在服务器中找到要下载的正确URL,以及如何避免权限问题?

这是我自己回答的问题

过程概要

  • 使用HTTP代理嗅探器确定URL的格式-请参见下文
  • 使用py ntlm,连接到TFS服务器,使用已知的URL格式获取“完整”报告页面
  • 解析报告页面以获取图像url,通过py-ntlm再次下载并存储
没有直接的URL,即我不能请求reportserver/myteam/burndownchart/20110815(nice和restful),但有一个参数样式的请求 包装器“报告”到我想要的图像。遗憾的是,仅仅在VS2010扩展中浏览并没有简单的方法可以找到它——我使用Charles debugger proxy查看VS2010发送的内容

您需要为团队直接访问报告的url类似于 \Release01\&pSprintTeam=\Release02\Sprint01\Team01

实际的图像URL会出现一些基于会话的混淆,这意味着我必须调用并解析报告页面,找到图像的URL,然后下载它。除此之外,我还需要让Python与Windows身份验证一起工作,而且通常需要做很多工作

下面的过程是合理的,但代码是脆弱的,我只是推荐它作为一个起点

标识报告的URL 安装py ntlm(http://code.google.com/p/python-ntlm/)

(a) 您每次都需要创建一个用户通行证和请求url的散列(浏览器通常不可见) (b) 然后将其作为urllib2处理程序传递给urllib2 (c) 通过urllib2像往常一样处理url

import urllib2
from ntlm import HTTPNtlmAuthHandler
#
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password) ## (a) 
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)  #(b)
opener = urllib2.build_opener(auth_NTLM)

urllib2.install_opener(opener)  # (c)
response = urllib2.urlopen(url_moi)
html = response.read()
这样我就得到了标准的报告网页,里面有图像。我现在需要提取那个图像url,我使用正则表达式来获取它 所有IMG标签,并在列表中的第二个。专业而不脆:-)

然后我们重建nltm散列(我已经下载了HTML报告页面,现在我想在其中包含JPG图像), 调用上面的URL并将输出写入本地磁盘

我希望这有帮助


YMMV

1。真的,这不是一篇文章,因为在资源上没有任何改变,但我已经解决了这个问题,需要上传它