在不使用 Flex 框架的情况下,从 ActionScript 3 调用 SOAP Web 服务的最佳库/包/类是什么?
最佳答案
推荐阅读:
带有设计模式的高级 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 react :
<?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>
关于actionscript-3 - 来自 AS3 的 SOAP Web 服务,没有 Flex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709840/