2009-11-10 24 views

回答

0

是否有你不想使用flex庫的原因?根據我的理解,僅將您需要的組件用於應用程序不應導致任何性能問題。

但是看看:http://alducente.wordpress.com/2007/10/27/web-service-in-as3-release-10/

我不知道這是否是最好的,但它已被我的同事的一個建議即

+0

謝謝,alducente的東西似乎可以爲我工作。稍後的版本可以在這裏找到:http://labs.alducente.com/gophr/ – 2009-11-11 09:28:09

3

推薦閱讀: 先進的ActionScript 3設計模式 喬伊·洛特和丹尼·帕特森 進入一個更好的和完整的解決方案第15章。

我的示例代碼:

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 
} 

SOAP請求:

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

SOAP響應:

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

我發現this post非常有用的。 這是一個很好的提示:添加一個swc在Flash中啓用Flex類。