私はFlexSOAPWebサービスを使用しており、WSDLに接続していますが、すべてがダンディです。しかし、私はWebサービスに不慣れで、Web担当者は休暇中なので、少し混乱しています。私が最初に行っているのは、接続チェックを実行することです。
private function configXMLHandler(event:LoaderEvent):void {
fws.wsdl = checkWSDL;
fws.loadWSDL();
fws.addEventListener(LoadEvent.LOAD, wsdlLoaded);
}
private function wsdlLoaded(event:LoadEvent):void {
checkAbstract = fws.getOperation("retrieveAssetIdbyLabel");
checkAbstract.arguments = ["poll-asset-do-not-remove"];
var token:AsyncToken = checkAbstract.send();
token.addResponder(new Responder(checkAbstractResult, checkAbstractError));
}
private function checkAbstractError(event:FaultEvent):void {
trace('Error in the WSDL');
}
private function checkAbstractResult(event:ResultEvent):void {
if (event.result.returnCode == 0) {
trace('Web service check ok');
initContentLoader();
} else {
trace('Error in the WSDL');
)
}
}
これは正常に機能し、期待どおりの結果が得られるので、次に進みます。次に、XMLリストを反復処理し、そのXML内のアセットごとに同じWebサービス関数を呼び出す必要があります。私の考えは、ループを使用することでした。
private function initContent(event:LoaderEvent):void {
assetList = event.target.content.asset;
for (var i:int = 0; i < assetList.length(); i++) {
assetAbstract = fws.getOperation("retrieveAssetIdbyLabel");
assetAbstract.arguments = [assetList[i + assetCount].assetLabel]; //get the current index in the xmllist + the assetCount, grab the corresponding assetLabel from the XML and pass that to the web service
trace(assetAbstract.arguments);
var assetToken:AsyncToken = assetAbstract.send();
assetToken.addResponder(new Responder(getAssetResult, getAssetError));
}
}
private function getAssetResult(event:ResultEvent):void {
var treasuresAsset:TreasuresAsset = new TreasuresAsset(event.result.returnCode, assetList[assetCount].asset.assetLabel, assetList[assetCount].asset.assetImage, assetList[assetCount].asset.assetDescription);
addChild(treasuresAsset);
assetCount++; //increase the asset count
}
private function getAssetError(event:FaultEvent):void {
trace(event.fault);
trace('An error occured when we tried to get an asset id in the loop');
}
エラーが発生しました:
URLを開くときにエラーが発生しました'http://www.nhm.ac.uk/web-services/VisitorService/'SOAPFault(サーバー):org.apache.axis2.databinding.ADBException:予期しないサブ要素RetrieveAssetIdbyLabel
私がすぐに考えたのは、xml内のアセットごとにWebサービスの新しいインスタンスを作成し、最初のコードを何度も繰り返す必要があるということでした。Webサービスを1回だけ使用できますか?手順全体を再作成する必要がありますか?
ありがとう。