Kako spletni storitvi SOAP v jeziku ActionScript 3 posredovati "Null" (pravi priimek!)

Imamo zaposlenega, katerega priimek je Null. Naša aplikacija za iskanje zaposlenih se ugasne, ko se ta priimek uporabi kot iskalni izraz (kar se zdaj dogaja precej pogosto). Napaka (hvala Fiddlerju!) je:

Jezik: lang-none -->

<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>

Simpatično, kajne?

Vrsta parametra je string.

Uporabljam:

  • WSDL (SOAP)
  • Flex 3.5
  • ActionScript 3
  • ColdFusion 8

Upoštevajte, da se napaka ne pojavi pri klicu spletne storitve kot objekta s strani ColdFusion.

Na xkcd note, na Bobby Tables website so dobri nasveti za izogibanje nepravilni interpretaciji uporabniških podatkov (v tem primeru niza "Null") v poizvedbah SQL v različnih jezikih, vključno s ColdFusion.

Iz vprašanja ni jasno razvidno, da je to vir težave, in glede na rešitev, navedeno v komentarju k prvemu odgovoru (vstavljanje parametrov v strukturo), se zdi verjetno, da je šlo za kaj drugega.

Komentarji (0)

Težava je lahko v kodirniku SOAP v programu Flex. Poskusite razširiti kodirnik SOAP v aplikaciji Flex in odpravite napake v programu, da vidite, kako se obravnava ničelna vrednost.

Domnevam, da se posreduje kot NaN (Not a Number). To včasih zmoti postopek razvozlavanja sporočil SOAP (predvsem v strežniku JBoss 5...). Spomnim se, da sem razširil kodirnik SOAP in izrecno preveril, kako se obravnava NaN.

Komentarji (1)

Kot hek bi lahko razmislili o posebnem ravnanju na strani odjemalca, ki bi pretvoril niz 'Null' v nekaj, kar se nikoli ne bo pojavilo, na primer XXNULLXX, in ga pretvoril nazaj na strežniku.

To ni lepo, vendar lahko reši problem za takšen mejni primer.

Komentarji (5)