Solved! Go to Solution.
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.soap.WebService; import services.bingsearchservice.BINGsearchservice; import valueObjects.Credentials; import valueObjects.FilterExpressionBase; import valueObjects.SearchOptions; import valueObjects.SearchRequest; import valueObjects.SearchResponse; protected function application1_creationCompleteHandler(event:FlexEvent):void { var BingSS:BINGsearchservice = new BINGsearchservice(); var sr:SearchRequest = new SearchRequest(); sr.Query = "restaurant in Seattle, WA"; var so:SearchOptions = new SearchOptions(); var creds:Credentials = new Credentials(); creds.ApplicationId = "YOUR BING KEY"; sr._Credentials = creds; BingSS.Search(sr); BingSS.addEventListener(ResultEvent.RESULT, bingResultHandler); BingSS.addEventListener(FaultEvent.FAULT, bingFaultHandler); } public function bingResultHandler(event:mx.rpc.events.ResultEvent):void { var searchResponse:SearchResponse = event.result as SearchResponse; var resultList:String = ""; for (var i:int=0; i < searchResponse.ResultSets[0].Results.length; i++) { resultList += searchResponse.ResultSets[0].Results.Name + "\n"; } Alert.show(resultList); } public function bingFaultHandler(event:mx.rpc.events.FaultEvent):void { Alert.show(event.fault.faultDetail,event.fault.name); } ]]> </fx:Script> </s:Application>
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.soap.WebService; import services.bingsearchservice.BINGsearchservice; import valueObjects.Credentials; import valueObjects.FilterExpressionBase; import valueObjects.SearchOptions; import valueObjects.SearchRequest; import valueObjects.SearchResponse; protected function application1_creationCompleteHandler(event:FlexEvent):void { var BingSS:BINGsearchservice = new BINGsearchservice(); var sr:SearchRequest = new SearchRequest(); sr.Query = "restaurant in Seattle, WA"; var so:SearchOptions = new SearchOptions(); var creds:Credentials = new Credentials(); creds.ApplicationId = "YOUR BING KEY"; sr._Credentials = creds; BingSS.Search(sr); BingSS.addEventListener(ResultEvent.RESULT, bingResultHandler); BingSS.addEventListener(FaultEvent.FAULT, bingFaultHandler); } public function bingResultHandler(event:mx.rpc.events.ResultEvent):void { var searchResponse:SearchResponse = event.result as SearchResponse; var resultList:String = ""; for (var i:int=0; i < searchResponse.ResultSets[0].Results.length; i++) { resultList += searchResponse.ResultSets[0].Results.Name + "\n"; } Alert.show(resultList); } public function bingFaultHandler(event:mx.rpc.events.FaultEvent):void { Alert.show(event.fault.faultDetail,event.fault.name); } ]]> </fx:Script> </s:Application>
Hi Robert, Chris,
I am looking for a way to use WSDL ( SOAP Service) in my ArcGIS Flex application using Flash Builder deveopment. I am trying to show the data from the WSDL in the SEARCH Widget. I dont know how to add and where to add, i know there is a way to add soap connection in the flash builder for ARCGIS FLEX API, but dont know where to add and how to make it work.
Any help would be greatly appreciated.
Thanks,
prasan.
Prasan,
Using a web service in Flex is actually very easy. I always configure it manually (though there is an automated way that I am not familiar with).
Example snippet:
private var webService:WebService;
webService = new WebService();
webService.wsdl="your wdl URL";
webService.Search.addEventListener(ResultEvent.RESULT, search_result);
webService.Search.resultFormat = "object";
webService.loadWSDL();
webService.Search.addEventListener(FaultEvent.FAULT, search_fault);
private function search_result(evt:ResultEvent):void
{
var pRslt:Object = evt.result;
if(!pRslt.results.length){
return;
}
dataGrid.dataProvider = pRslt.results;
}
Notice the .Search after the webService, that is the name of the function in my web service.
Hi Robert,
Thanks a lot for the code. I really apprecaite it. I have couple of questions regarding. As I am not a developer and I only know how to use the FLEX API on XML level, I need to understand certain things,.
1. Shall I add this search_result function in SearchWidget.mxml ?
2. What if I have the wsdl file (shown in my previous thread picture) instead of URL and it has to be triggered everytime when I Search a feature using the search widget, shall I give the path to wsdl file in webservice.wsdl="your wsdl URL".?
3. How does the funtion recognize the data structure in the WSDL file.?
Looking forward to hear from you,
Thanks again,
Prasan
Prasan,
This is probably going to be a pretty hard task for you to tackle then if you have no Flex programming experience.
I can make out much from your screenshot as the xml is not formatted. But you or who ever created the web service would know what the inputs and outputs would be.
Hi Robert,
Than you so much for the help. I'll work with a flex developer on your code. Much appreciated.
Thanks again,
Prasan.