【问题标题】:DataWeave Multipart/form-data input encoding not recognized in Mule4在 Mule4 中无法识别 DataWeave Multipart/form-data 输入编码
【发布时间】:2021-05-26 20:30:46
【问题描述】:

是否有一个选项可以在接收到侦听器的 multipart/form-data 中按部分设置编码?

我有这种多部分要接收:

----------------------------180928595588258919887097
Content-Disposition: form-data; name="qualifyResult"; filename="json1.json"
Content-Type: application/json

{
    "json1": "1"
}

----------------------------180928595588258919887097
Content-Disposition: form-data; name="raceOneResult"; filename="json2.json"
Content-Type: application/json

{
    "json2": "2"
}

----------------------------180928595588258919887097--

两个 JSON 文件都是 UTF-16 格式,所以当我尝试将文件数据存储到变量时 - 使用以下 DataWeave 脚本:

%dw 2.0
output application/json
---
payload.parts.'qualifyResult'.content

它返回这种错误:

org.mule.runtime.core.api.expression.ExpressionRuntimeException: "Unexpected character 'ÿ' at qualifyResult@[1:1] (line:column), expected false or true or null or {...} or [...] or number but was , while reading `qualifyResult` as Json.
 
1| 
   ^" evaluating expression: "%dw 2.0

output application/json

---

payload.parts.'qualifyResult'.content".

所以我认为 DataWeave 只是尝试使用 UTF-8 编码而不是 UTF-16 来读取数据。 我还尝试在使用 DataWeave 的 Set variable 组件上设置编码(如下 sn-p 所示),但这并没有改变任何东西。

<set-variable value="#[%dw 2.0
&#10;output application/json
&#10;---
&#10;payload.parts.'qualifyResult'.content]" doc:name="qualifyResult" doc:id="34800576-0539-4f95-8977-8353a255d83d" variableName="qualifyResult" encoding="UTF-16"/>

如何处理正确编码的入站文件数据? 感谢所有有效的答案。

【问题讨论】:

  • 您可以尝试在 dataweave 中将编码设置为 'UTF-16',在其中您尝试提取 'qualifyResult'.content 值。例如,您在转换组件中的标题部分看起来像这样 --> %dw 2.0 output application/json encoding="UTF-16"
  • 谢谢@TheOtherGuy,这个已经试过了,没用output application/json encoding="UTF-16"

标签: encoding mule multipartform-data dataweave mule4


【解决方案1】:

看起来编码没有问题。从错误中提到的字符ÿ 看来,它是数据开头的Byte Order Marker (BOM) 的一部分,用于指示UTF 编码。 DataWeave 目前不支持 BOM 并认为它是垃圾,因此会引发错误。如果您无法避免该有效负载与 BOM 一起发送,您可能需要一些 Java 方法或脚本将其删除,然后再尝试使用 DataWeave 对其进行解析。

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多