Я использую Mule 4, и у меня есть Селектор ошибок значения, когда полезная нагрузка является строкой, а не имеет следующую структуру:
{"status": 0, "content": {"status": "201",...........
Я использую переменную set в Mule 4, задающую это значение:
<set-variable value="#[if (payload.content? and payload.content.status? and payload.content.status >= 200) payload.content.status else 500]" doc:name="Set Status" doc:id="e9ce4fd1-9664-4401-b9a2-e47913b689af" variableName="httpStatus"/>
Я использую условие:
if (payload.content? and payload.content.status? and payload.content.status >= 200) payload.content.status else 500
, но иногда сервер может ответить на строку типа «Не авторизован», тогда payload.content не существует, простострока.
Set Variable дает мне эту ошибку, когда полезной нагрузкой является строка
"\"You called the function 'Value Selector' with these arguments: \n 1: Binary (\"Richiesta Non Autorizzata\" as Binary {encoding: \"UTF-8\", mediaType: \"text/ht...)\n 2: Name (\"content\")\n\nBut it expects one of these combinations:\n (Array, Name)\n (Array, String)\n (Date, Name)\n (DateTime, Name)\n (LocalDateTime, Name)\n (LocalTime, Name)\n (Object, Name)\n (Object, String)\n (Period, Name)\n (Time, Name)\n\n1| if (payload.content? and payload.content.status? and payload.content.status >= 200) payload.content.status else 500\n ^^^^^^^^^^^^^^^\nTrace:\n at main (line: 1, column: 5)\" evaluating expression: \"if (payload.content? and payload.content.status? and payload.content.status >= 200) payload.content.status else 500\".",