У меня есть настраиваемый соединитель Azure к SOAP API, который настроен с SOAP на REST. Один из методов имеет datetime в качестве ввода:
Я генерирую DateTime со следующим выражением:
formatDateTime(addDays(utcNow(), -1), 's')
Со следующим необработанным вводом из приложений логики я получаю исключение формата даты и времени
{
"method": "post",
"path": "/MethodWithDates",
"retryPolicy": {
"type": "None"
},
"body": {
"MethodWithDates": {
"timefrom": "2019-03-18T15:59:03",
"timeto": "2019-03-19T15:59:03"
}
}
Сообщение об ошибке из API:
The value '3/18/2019 3:59:03 PM' cannot be parsed as the type 'DateTime'.'
Обратите внимание, как формат даты и времени изменился с необработанного вывода на полученный в API. Это наводит меня на мысль, что пользовательский соединитель как-то меняет формат времени.
Если я вызываю ту же конечную точку с SOAP UI со следующим запросом SOAP, я получаю правильный ответ. Обратите внимание, что формат даты и времени такой же, как во вводе RAW из приложения логики:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:MethodWithDates>
<tem:timefrom>2019-03-18T15:13:31</tem:timefrom>
<tem:timeto>2019-03-19T15:13:31</tem:timeto>
</tem:MethodWithDates>
</soapenv:Body>
</soapenv:Envelope>
Интересно, что это происходит только для спецификатора формата "s", если я форматирую значение любым другим способом, через которое оно передается в указанном мной формате. Я по-прежнему получаю сообщение об ошибке в API, так как это API-интерфейс WCF, и, похоже, требуется формат "s"