Як передати "Null" (реальне прізвище!) в SOAP веб-сервіс в ActionScript 3
У нас є співробітник з прізвищем Null. Наш додаток для пошуку співробітників не працює, коли це прізвище використовується в якості пошукового терміну (що зараз трапляється досить часто). Отримана помилка (спасибі Fiddler!) полягає в наступному:
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The SEARCHSTRING parameter to the getFacultyNames function is required but was not passed in.]</faultstring>
Мило, правда?
Тип параметру - string
.
Я використовую:
Зверніть увагу, що помилка не виникає при виклику веб-сервісу як об'єкта зі сторінки ColdFusion.
4596
3
На xkcd note, сайті Bobby Tables є слушні поради щодо уникнення некоректної інтерпретації даних користувача (в даному випадку рядка "Null") в SQL-запитах на різних мовах, в тому числі і на ColdFusion.
Із запитання не зрозуміло, що саме це є джерелом проблеми, а враховуючи рішення, зазначене у коментарі до першої відповіді (вбудовування параметрів у структуру), видається ймовірним, що це було щось інше.
Проблема може бути в кодеру SOAP Flex. Спробуйте розширити кодер SOAP у вашому додатку Flex і налагодити програму, щоб побачити, як обробляється нульове значення.
Я припускаю, що воно передається як NaN (не число). Це коли-небудь зіпсує процес розбиття SOAP-повідомлень (особливо в сервері JBoss 5...). Я пам'ятаю, як розширював кодер SOAP і виконував явну перевірку того, як обробляється NaN.
В якості злому можна розглянути спеціальну обробку на стороні клієнта, перетворення рядка 'Null' в щось, що ніколи не відбудеться, наприклад, XXNULLXX і зворотне перетворення на сервері.
Це не дуже красиво, але це може вирішити проблему для такого граничного випадку.