在Azure Logic Apps中调用multipart / form-data REST服务

时间:2016-01-04 12:10:57

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

我在Azure Logic Apps中使用Http Listener和Http操作创建了一个工作流程。监听器是捕获POST请求,Http操作有我的api的详细信息,该api是在azure web app上托管的。请求是multipart / form-data类型,并发布文件以及其他3个字符串值。

我的问题是

  1. 如果我在Http动作中明确地将内容类型标题设置为multipart / form-data,则它不会将任何边界传递给api控制器并且我的api正在给出错误"请求被拒绝,因为没有多部分边界被发现"。
  2. 如果我尝试将@triggers().outputs.body.ContentType作为我的http操作的标头,我收到此错误:
  3.   

    {"代码":" InvalidTemplate","消息":"无法处理模板   行动中的语言表达' http'输入线#1;'和专栏   ' 11':'错误转换值\" multipart / form-data;   边界= ---- WebKitFormBoundaryi3knGy6dh92BdKdr \"输入   ' Microsoft.WindowsAzure.ResourceStack.Common.Collections.InsensitiveDictionary`1 [System.String]&#39 ;.   路径'标题'。'。"}

    请帮忙,如何使用Http动作将内容类型和边界传递给我的api?

1 个答案:

答案 0 :(得分:0)

Logic应用程序定义中的headers对象是一个带有键和值的JSON对象。具体来说,如果要像上面那样传递内容类型标题,则代码视图中的对象定义将如下所示:

"MyAction" : {
  "type" : "http",
  "inputs" : {
    "headers" : {
      "Content-type" : "@triggerBody().ContentType"
    },
    "body" : … rest of properties here …

希望这就是为什么你的API也没有获得边界的原因。