从微策略中直接获取导出的PDF文档

时间:2015-12-17 10:21:10

标签: javascript java cors microstrategy

这是我的情况: 我的第三部分使用了一个名为microstrategy的软件,它能够生成文档并允许将它们导出为PDF或Excel文件。他们只向我提供此产品的web api,而且我没有任何Web服务可供使用。

网址如下:

http://<third_part_domain>/microstrategy/asp/Main.aspx?Server=<third_part_domain>&Project=<project_name>&evt=3069&src=Main.aspx.3069&executionMode=3&promptAnswerMode=1&documentID=<doc_id>&uid=<username>&pwd=<password>&<other_parameters_for_request>

我试图通过java代码获取文件(我必须保存在服务器端),但是我们使用的链接的响应是一个HTML页面,其中包含一些代码Javascript,它可以执行多个重定向,所以我可以没有正确解释响应,我应该使用浏览器来获取PDF。

所以我想把页面放到iframe中一段时间​​后(通常服务器需要20秒)通过javascript代码获取PDF对象并发送到我的服务器。但显然第三部分有另一个域,CORS策略阻止了一切。更糟糕的是,我无法使用最终的URL来获取文件,因为微策略用响应我的管理控制台的内部页面。

所以,这是我的问题:

是否有办法(不在微策略服务器端)从微策略直接获取PDF?

还是存在一种从客户端绕过原点控制问题的方法?我已经评估过为解决方案实现代理,但它太贵了。

感谢所有人!

2 个答案:

答案 0 :(得分:1)

您需要两件事才能使用URL从MicroStrategy下载PDF:

  1. 在文档属性中将默认可视化设置为PDF。这非常简单,我认为您的任何MicroStrategy精明的同事都可以帮助您。

  2. 禁用等待页面,这更复杂。当MicroStrategy生成文档时,通常需要一些时间,同时服务器正在运行它会向您显示一个等待页面。如果请求来自人(人类可以继续StackOverflow),如果来自API的呼叫不是那么多,那就很有用。

  3. 禁用等待页面的说明如下:TN34124: How to Disable the Wait Page in MicroStrategy Web using the MicroStrategy Web SDK 9.x

    但我从您的问题中读到,您无法控制第三方MicroStrategy应用程序。在那种情况下,你几乎无能为力。您可以尝试让他们实现自定义以删除等待页面或允许您使用taskproc API,但这是另一天的故事。

答案 1 :(得分:0)

一些选项:

  1. 要求第三方安排PDF生成并通过邮件发送给您。或者将其放在您之间共享的共享文件夹中。

  2. 从文件共享菜单选项中请求不同的网址图样。这将提供一个包含&#39; subscriptionid&#39;在里面。