Actionscript 3 来自AS3的SOAP web服务,没有Flex?

Actionscript 3 来自AS3的SOAP web服务,没有Flex?,actionscript-3,actionscript,soap,Actionscript 3,Actionscript,Soap,在不使用Flex框架的情况下,从ActionScript 3调用SOAP web服务的最佳库/包/类是什么?您不想使用Flex库的原因是什么?据我所知,仅在应用程序中使用所需的组件不会导致任何性能问题 但是,请看一下: 我不确定这是不是最好的,但我的一个同事已经向我推荐了它 建议阅读: 带有设计模式的高级ActionScript3 乔伊·洛特和丹尼·帕特森 有关更好、完整的解决方案,请参阅第15章 我的示例代码: private var xmlResults:XML = new URLLoade

在不使用Flex框架的情况下,从ActionScript 3调用SOAP web服务的最佳库/包/类是什么?

您不想使用Flex库的原因是什么?据我所知,仅在应用程序中使用所需的组件不会导致任何性能问题

但是,请看一下:

我不确定这是不是最好的,但我的一个同事已经向我推荐了它

建议阅读: 带有设计模式的高级ActionScript3 乔伊·洛特和丹尼·帕特森 有关更好、完整的解决方案,请参阅第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>
我觉得很有用。
一般来说,这是一个很好的提示:添加一个swc以在flash中启用Flex类。

谢谢,alducente的东西似乎对我有用。可在此处找到稍晚的版本: