2009-11-10 5 views

Répondre

0

Y a-t-il une raison pour laquelle vous ne voulez pas utiliser les bibliothèques flexibles? De ce que je comprends en utilisant uniquement les composants dont vous avez besoin dans votre application ne devrait pas vous causer des problèmes de performance.

cependant prendre un coup d'oeil: http://alducente.wordpress.com/2007/10/27/web-service-in-as3-release-10/

Je ne sais pas si c'est le meilleur, mais il a été recommandé e par un de mes collègues.

+0

Merci, les trucs alducente semble que ça peut marcher pour moi. Une version plus récente peut être trouvée ici: http://labs.alducente.com/gophr/ –

3

Lecture suggérée: avancée ActionScript 3 avec des modèles de conception par Joey Lott et Danny Patterson Aller au chapitre 15 pour une meilleure solution et complète.

Mon code exemple:

private var xmlResults:XML = new URLLoader; 
private var urlLoader:URLLoader = new URLLoader(); 


public function fErrorHandler(e:IOErrorEvent):void { 
    trace("xml failed!"); 
     } 


//when the "loader" event object finishes the loading of the xml file, run other needed functions to process the data 
private function fLoaderCompleteHandler(event:Event):void { 

    trace("xml loaded!!"); //jwt testing 
    var result2:XML = new XML(urlLoader.data); // loads the xml file data into the xml object 
    xmlResults = result2; //have the global xml object equal the current data loaded xml object 
    result2 = null; // dont need current xml object any more so erase it 

    fParseXML(0); //process the first set of records from the xml object 
    trace("found xml" + xmlResults.toString()); 
     } 


public function fParseXML(intAddNum:Number):void{ 
    //create variables to store the record info 
    // 
    var envelope:XML = xmlResults; //XML(urlLoader.data); 
    var soap:Namespace = envelope.namespace("soap"); 
    var responseN:Namespace = new Namespace("http://www.domain.com/school/ServiceCollege"); 
    var resultL:XMLList = envelope.soap::Body.responseN::HelloTestResponse.responseN::HelloTestResult; 

    var strTest:String; 
    //if only one response field will be return by the web service 
    strTest = resultL; 
    //do something like this if multiple response feilds will be returned 
    //strTest = resultL.response::schoolName.toString(); 
    trace("parsing:" + strTest); 
    trace("done loading:"); 
    } 


public function fBeginRequest():void{ 
    var strXMLDataRequest:String 
    var urlRequest:URLRequest = new URLRequest(); 
    urlRequest.contentType = "text/xml; charset=utf-8"; 
    urlRequest.method = "POST"; 
    urlRequest.url = "http://www.domain.com/school/serviceCollege.asmx"; 
    var soapAction:URLRequestHeader = new URLRequestHeader("SOAPAction","http://www.domain.com/school/ServiceCollege/HelloTest"); 
    urlRequest.requestHeaders.push(soapAction); 
    strXMLDataRequest = "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"; 
    strXMLDataRequest = strXMLDataRequest + "<soap:Body>"; 
    strXMLDataRequest = strXMLDataRequest + "<HelloTest xmlns=\"http://www.domain.com/school/ServiceCollege\" />"; 
    strXMLDataRequest = strXMLDataRequest + "</soap:Body>"; 
    strXMLDataRequest = strXMLDataRequest + "</soap:Envelope>"; 
    urlRequest.data = new XML(strXMLDataRequest); 
    urlLoader.load(urlRequest); 
     urlLoader.addEventListener(IOErrorEvent.IO_ERROR, fErrorHandler); //add the event to the "loader" object 
     urlLoader.addEventListener(Event.COMPLETE, fLoaderCompleteHandler); //add the event to the "loader" object 
} 

Savon demande:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <HelloTest xmlns="http://www.domain.com/school/ServiceCollege" /> 
    </soap:Body> 
</soap:Envelope> 

Réponse de savon:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <HelloTestResponse xmlns="http://www.domain.com/school/ServiceCollege"> 
     <HelloTestResult>string</HelloTestResult> 
    </HelloTestResponse> 
    </soap:Body> 
</soap:Envelope> 
1

J'ai trouvé this post très utile. C'est un bon conseil en général: ajoutez un swc pour activer les classes Flex en flash.