0

我有一个简单的 Azure 逻辑应用程序,其中包含以下组件:

  • 复发
  • HTTP 从 HTTPS 网址获取

我尝试配置下一个组件以将 HTTP 响应正文保存到 OneDrive,其中 OneDrive 连接器配置如下:

  • 文件路径:ApiTest/test.json
  • 内容:@{body('http')}
  • 内容传输编码:无

这给出了以下错误:

{"code":"InvalidTemplate","message":"Unable to process template language expressions in action 'microsoftonedriveconnector' input at line '1' and column '11': '无法评估模板语言表达式:字符串插值段之一值具有不支持的类型 'Object'。请使用 'string()' 函数将值转换为字符串。'。"}

如果我然后使用 @{string(body('http'))} 我得到:

{"code":"InvalidTemplate","message":"Unable to process template language expressions in action 'microsoftonedriveconnector' input at line '1' and column '11': 'The template language function 'string' was invoked with an invalid参数。该值无法转换为目标类型。'。"}

如何使用 HTTP 连接器的主体并将其保存到一个驱动器?

4

3 回答 3

0

我没有答案,但我现在正在努力解决这个问题。如果我找到解决方案,我会发布,如果其他人找到解决方案,我会非常感兴趣。我确实发现一件事很有趣。我的 Http 连接器的消费端有一个 header 和 body 选项,它在运行时工作。将该值传递给下一张卡时会发生错误(如上面的海报所述)。但是,当我查看运行选项卡上的输出(链接)时,我会看到标题和正文的 json 值。这是否需要包装在 json 解析器中?

于 2015-05-28T16:09:09.730 回答
0

这对我来说很好,并在 /random/test.txt 文件夹中生成了文件,但是我相信你的问题是你正在下载一个 JSON 文件,这导致它被引擎解释为一个对象。我会跟进团队,也许我们需要一个“ToJson”调用,或者一种“Passthrough”的方法,或者让“String”更“灵活”(尽管这可能很奇怪)。

                "fileContent": {
                    "Content": "@{body('http')}",
                    "ContentTransferEncoding": "None"
                },

代码视图中的操作如下所示:

"http": {
        "type": "Http",
        "inputs": {
            "method": "GET",
            "uri": "http://www.carlosag.net/"
        },
        "conditions": []
    },
    "microsoftonedriveconnector": {
        "type": "ApiApp",
        "inputs": {
            "apiVersion": "2015-01-14",
            "host": {
                "id": "/subscriptions/xxx/resourceGroups/zzz/providers/Microsoft.AppService/apiApps/MicrosoftOneDriveConnector",
                "gateway": "https://yyy.azurewebsites.net"
            },
            "operation": "UploadFile",
            "parameters": {
                "filePath": "random/test.json",
                "fileContent": {
                    "Content": "@{body('http')}",
                    "ContentTransferEncoding": "None"
                },
                "overwrite": true
            },
            "authentication": {
                "type": "Raw",
                "scheme": "Zumo",
                "parameter": "@parameters('/subscriptions/...')"
            }
        },
于 2015-05-28T23:54:11.490 回答
0

你应该试试“@body('http')”。我相信这会奏效。"@{body('http')}" 是字符串插值的一种形式:预期输出值是字符串而不是 JSON。

于 2015-05-29T01:57:01.653 回答