Azure Logic App:如何将HTTP Connector的正文内容保存到OneDrive文件?

时间:2015-05-28 08:42:33

标签: azure azure-api-apps azure-logic-apps

我有一个简单的Azure Logic App,其中包含以下组件:

  • 复发
  • HTTP从HTTPS获取网址

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

  • FilePath:ApiTest / test.json
  • 内容:@ {body(' http')}
  • 内容转移编码:无

这会出现以下错误:

{"代码":" InvalidTemplate","消息":"无法在行动中处理模板语言表达式' microsoftonedriveconnector&#39 ;输入线#1;'和列' 11':'模板语言表达式无法评估:字符串插值段值之一具有不支持的类型'对象'。请使用'字符串()'将值转换为字符串。功能'"}

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

{"代码":" InvalidTemplate","消息":"无法在行动中处理模板语言表达式' microsoftonedriveconnector&#39 ;输入线#1;'和列' 11':'模板语言功能'字符串'使用无效参数调用。该值无法转换为目标类型。'。"}

如何使用HTTP连接器的主体并将其保存到One Drive?

3 个答案:

答案 0 :(得分:0)

我没有答案,但我现在正在努力解决这个问题。如果我找到解决方案,我将发布,并且对其他人找到解决方案的情况非常感兴趣。我觉得有一件事很有意思。我的Http连接器的消费端有一个标题和正文选项,它在运行时有效。将该值传递给下一张卡时会出现错误(如上面的海报注释)。但是,当我查看运行选项卡上的输出(链接)时,我会看到标题和正文的json值。这需要包装在json解析器中吗?

答案 1 :(得分: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/...')"
            }
        },

答案 2 :(得分:0)

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