Kaip perduoti "Null" (tikrą pavardę!) SOAP žiniatinklio paslaugai naudojant "ActionScript 3

Turime darbuotoją, kurio pavardė yra Null. Kai ši pavardė naudojama kaip paieškos žodis (o tai dabar pasitaiko gana dažnai), mūsų darbuotojų paieškos programa žūsta. Gaunama tokia klaida (ačiū 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>

Mielas, ar ne?

Parametro tipas yra string.

Aš naudoju:

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

Atkreipkite dėmesį, kad klaida neatsiranda, kai iš "ColdFusion" puslapio kviečiama žiniatinklio paslauga kaip objektas.

xkcd pastaba, Bobby Tables svetainėje yra gerų patarimų, kaip išvengti netinkamo naudotojo duomenų (šiuo atveju eilutės "Null") interpretavimo SQL užklausose įvairiomis kalbomis, įskaitant ColdFusion.

Iš klausimo neaišku, ar tai yra problemos šaltinis, o atsižvelgiant į pirmojo atsakymo komentare nurodytą sprendimą (parametrų įterpimas į struktūrą), tikėtina, kad tai buvo kas nors kita.

Komentarai (0)

Problema gali būti "Flex's SOAP koduotėje. Pabandykite išplėsti "Flex" programos SOAP koduotoją ir derinkite programą, kad pamatytumėte, kaip elgiamasi su nuline reikšme.

Spėju, kad ji perduodama kaip NaN (ne skaičius). Tai kai kada sutrikdo SOAP pranešimo išskleidimo procesą (ypač JBoss 5 serveryje...). Prisimenu, kad išplėčiau SOAP koduotę ir atlikau aiškų patikrinimą, kaip elgiamasi su NaN.

Komentarai (1)

Kaip haką, galite apsvarstyti galimybę kliento pusėje atlikti specialų tvarkymą, konvertuojant 'Null' eilutę į kažką, kas niekada nepasitaikys, pavyzdžiui, XXNULLXX ir konvertuojant atgal serveryje.

Tai nėra gražu, bet gali išspręsti tokio ribinio atvejo problemą.

Komentarai (5)