首页 > 解决方案 > LogicApps 场景登录、下载、压缩

问题描述

我使用表单身份验证(用户名和密码)访问第 3 方网站。登录后,我调用 HTTP 端点并在正文中接收 XML。XML 包含 1000 个 XML 元素。在每个元素中都有一个文本值,一个代码。对于这些代码中的每一个,我都会进一步调用不同的 HTTP 端点。响应更多的是 XML。收到所有 1000 个响应后,我想将所有 XML 响应作为文件添加到 zip 容器中,并使其可供下载。

我想看看 LogicApps 如何尽快做到这一点。

标签: azure-logic-apps

解决方案


  1. 调用第一个 HTTP 端点(身份验证设置为基本身份验证并输入用户/密码)
  2. 使用xpath(xml(<body var here>), '//elementNameHere')调用结果的 Body 上的表达式来获取返回值中包含代码的所有元素
  3. Foreach 超过这个返回值和
    1. 进行 HTTP 调用
    2. 将结果附加到数组变量,或连接到字符串变量。
  4. 将此值提交到 Blob 存储

但是,因为您在 foreach 循环中弄乱了 vars,所以您必须按顺序执行(将 Foreach 循环上的并发控制设置为“on”和“1”),否则您可能会得到一个糟糕的结果。

我不知道在此处“压缩内容”的方法,因此您可能必须将结果发送到使用 .Net zip lib 来完成工作的 Azure 函数(或 js zip lib,无论您的风格如何)并执行为您放入 blob 存储。

这在Durable Functions 领域也会容易得多,如果您愿意的话,我鼓励您研究一下。

您可能会考虑的一种温和替代方案是步骤 3.2,而是将该结果上传到 Blob 存储容器,然后通过 Azure 函数调用使整个容器可供下载,该调用获取容器并压缩内容(或 Blob 存储 URL对于容器已经为您执行此操作了吗?不确定)


推荐阅读