这是我的情况:
我的第三部分使用的是称为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代码获取文件(必须将其保存在服务器端),但是我们使用的链接的响应是带有某些代码Javascript的HTML页面,该JavaScript执行了多个重定向,因此无法正确解释响应,我应该使用浏览器来获取PDF。

因此,我曾考虑过将页面放入iframe,过一会儿(通常服务器需要20秒),然后通过javascript代码获取PDF对象,然后发送到我的服务器。但是很明显,第三部分有另一个域,CORS策略会阻止所有内容。更糟糕的是,我无法使用最终URL来获取文件,因为微策略会通过管理控制台的内部页面回复我。

所以,这就是我的问题:

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

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

谢谢大家!

最佳答案

要使用URL从MicroStrategy下载PDF,您需要做两件事:


在文档属性中,将该默认可视化设置为PDF。这非常琐碎,我想您的任何MicroStrategy精明的同事都可以为您提供帮助。
禁用等待页面,这更加复杂。 MicroStrategy生成文档时,通常需要一些时间,而服务器正在工作时,它将显示一个等待页面。如果请求来自人工(人工可以继续StackOverflow),则很有用,如果调用来自API,则不会那么有用。


禁用等待页面的指令在这里:TN34124: How to Disable the Wait Page in MicroStrategy Web using the MicroStrategy Web SDK 9.x

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

关于javascript - 从微策略直接获取导出的PDF文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34332103/

10-09 04:59