Page 1 sur 1
WebService et objet complexe
nairik
Posted 18 July 2007 - 03:23 PM
Bonjour,
Je dois réaliser une partie de stats pour mon site, et les composants de flex sont assez cool.
J'ai reussi a mettre en place un systeme de webService mais je ne comprend pas comment faire pour renvoyer des objets complexe a flex.
Un PieChart necessite apparement un ArrayCollection comme dataProvider, estceque je suis obligé de renvoyé une string depuis mon webService et de reconstruire l'arraycollection par la suite ou ya t-il un autre moyen ?
Merci de votre aide.
Bon dev
Je dois réaliser une partie de stats pour mon site, et les composants de flex sont assez cool.
J'ai reussi a mettre en place un systeme de webService mais je ne comprend pas comment faire pour renvoyer des objets complexe a flex.
Un PieChart necessite apparement un ArrayCollection comme dataProvider, estceque je suis obligé de renvoyé une string depuis mon webService et de reconstruire l'arraycollection par la suite ou ya t-il un autre moyen ?
Merci de votre aide.
Bon dev
Page 1 sur 1
Autres réponses dans ce sujet
Fusion
Posted 18 July 2007 - 03:42 PM
Il me semble que amfphp c'est que pour php ...
Je n'ai pas trouver de sollution c# ... mon site est en asp.net
N'y a t-il aucun moyen de passer des objets complexe par webService?
Je n'ai pas trouver de sollution c# ... mon site est en asp.net
N'y a t-il aucun moyen de passer des objets complexe par webService?
Si, mais il faut les fabriquer de toutes pièces. A base d'objets simples.
Je tâcherai de retrouver les exemples que j'avais faits à l'époque. Et si tu nous indiquais le lien du WebService en question (si ce n'est pas indiscret) ?
nairik
Posted 18 July 2007 - 04:02 PM
ca serait super ...
Ca parait bete mais le seul moyen plus ou moin simple que j'ai trouver pour passer les infos de mon site a flex c'est le webService.
Donc au sein de mon application asp.net j'expose un webService, cependant il n'est pas encore en production...
En gros il renvoit une string de la forme : NomPays1+" "+Nbre+" "+NomPays2+" "+Nbre+ ...
J'ai plus qu'a transformer ca en ArrayCollection. Je cherche
Ca parait bete mais le seul moyen plus ou moin simple que j'ai trouver pour passer les infos de mon site a flex c'est le webService.
Donc au sein de mon application asp.net j'expose un webService, cependant il n'est pas encore en production...
En gros il renvoit une string de la forme : NomPays1+" "+Nbre+" "+NomPays2+" "+Nbre+ ...
J'ai plus qu'a transformer ca en ArrayCollection. Je cherche
Fusion
Posted 18 July 2007 - 05:00 PM
Pour découper la String utilise les méthodes splice() et split() (http://livedocs.adob...ng.html#slice() pour slice et split juste en dessus)
Ensuite pour construire le ArrayCollection tu le remplis avec addItem. J'ai bien des exemples mais ils ne sont pas à moi et ils sont bien compliqués aussi.
Des exemples plus tard, peut-être...
Ensuite pour construire le ArrayCollection tu le remplis avec addItem. J'ai bien des exemples mais ils ne sont pas à moi et ils sont bien compliqués aussi.
Des exemples plus tard, peut-être...
nairik
Posted 19 July 2007 - 07:40 AM
Oui voila mais je ne comprend pas a quoi cela peut servir ....
Le but serait de pouvoir passer un objet pays, qui posséde deux attributs : nom et nombre. Si j'arrive a faire ca j'arriverai a faire le reste
MErci bcp de ton aide en tout cas
Le but serait de pouvoir passer un objet pays, qui posséde deux attributs : nom et nombre. Si j'arrive a faire ca j'arriverai a faire le reste
MErci bcp de ton aide en tout cas
Action Script
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
- <s:element name="HelloWorld">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="toto" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="HelloWorldResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="GetPaysByName">
<s:complexType />
</s:element>
- <s:element name="GetPaysByNameResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetPaysByNameResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
- <wsdl:message name="HelloWorldSoapIn">
<wsdl:part name="parameters" element="tns:HelloWorld" />
</wsdl:message>
- <wsdl:message name="HelloWorldSoapOut">
<wsdl:part name="parameters" element="tns:HelloWorldResponse" />
</wsdl:message>
- <wsdl:message name="GetPaysByNameSoapIn">
<wsdl:part name="parameters" element="tns:GetPaysByName" />
</wsdl:message>
- <wsdl:message name="GetPaysByNameSoapOut">
<wsdl:part name="parameters" element="tns:GetPaysByNameResponse" />
</wsdl:message>
- <wsdl:portType name="DatasFromExcelSoap">
- <wsdl:operation name="HelloWorld">
<wsdl:input message="tns:HelloWorldSoapIn" />
<wsdl:output message="tns:HelloWorldSoapOut" />
</wsdl:operation>
- <wsdl:operation name="GetPaysByName">
<wsdl:input message="tns:GetPaysByNameSoapIn" />
<wsdl:output message="tns:GetPaysByNameSoapOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="DatasFromExcelSoap" type="tns:DatasFromExcelSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="HelloWorld">
<soap:operation soapAction="http://tempuri.org/HelloWorld" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetPaysByName">
<soap:operation soapAction="http://tempuri.org/GetPaysByName" style="document" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:binding name="DatasFromExcelSoap12" type="tns:DatasFromExcelSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="HelloWorld">
<soap12:operation soapAction="http://tempuri.org/HelloWorld" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="GetPaysByName">
<soap12:operation soapAction="http://tempuri.org/GetPaysByName" style="document" />
- <wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="DatasFromExcel">
- <wsdl:port name="DatasFromExcelSoap" binding="tns:DatasFromExcelSoap">
<soap:address location="http://localhost/ePcLoc/WS/DatasFromExcel.asmx" />
</wsdl:port>
- <wsdl:port name="DatasFromExcelSoap12" binding="tns:DatasFromExcelSoap12">
<soap12:address location="http://localhost/ePcLoc/WS/DatasFromExcel.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Fusion
Posted 19 July 2007 - 08:38 AM
Comme tu l'as vu, j'ai remis en forme le code, le format AS lui va bien
Je suis tombé sur ce lien au cours de mes recherches, c'est un exemple assez proche du tien : http://www.brucephil...t-4--WebService
Il a fait en une page ce que je m'acharnais à faire ce matin. Maintenant j'attire ton attention sur cette partie de son code :
C'est lorsque tu définis tes opérations que tu utilises intensivement le schéma XML que je t'avais demandé. L'avantage du SOAP est que c'est très facile de faire communiquer deux Webservices avec ce langage, indépendamment du système d'exploitation, du browser et j'en passe. Mais il faut parler avec les mêmes mots...
Je reviens plus tard avec un exemple adapté à ton cas (enfin, je ne pourrai pas le tester, je suppose qu'il marchera ce sera à toi de me le dire)
Je suis tombé sur ce lien au cours de mes recherches, c'est un exemple assez proche du tien : http://www.brucephil...t-4--WebService
Il a fait en une page ce que je m'acharnais à faire ce matin. Maintenant j'attire ton attention sur cette partie de son code :
Action Script
<mx:WebService
id="WS"
wsdl="http://www.webservicex.net/uszip.asmx?wsdl"
useProxy="false"
fault="alert.show(event.fault.faultString), 'Error'"
showBusyCursor="true" >
<!--specify the WebService method to use-->
<mx:operation name="GetInfoByCity" resultFormat="e4x" >
<!--specify the values for the method parameters-->
<mx:request>
<USCity>
{city.selectedItem.toString()}
</USCity>
</mx:request>
</mx:operation>
</mx:WebService>
C'est lorsque tu définis tes opérations que tu utilises intensivement le schéma XML que je t'avais demandé. L'avantage du SOAP est que c'est très facile de faire communiquer deux Webservices avec ce langage, indépendamment du système d'exploitation, du browser et j'en passe. Mais il faut parler avec les mêmes mots...
Je reviens plus tard avec un exemple adapté à ton cas (enfin, je ne pourrai pas le tester, je suppose qu'il marchera ce sera à toi de me le dire)
Fusion
Posted 19 July 2007 - 09:00 AM
Deux choses :
Operation :
Message :
Définition de Property :
Opération associée dans le Webservice :
Pas si complexe de créer un type complexe... Tu remarqueras l'analogie entre la définition des opérations et messages et la structure de mon <mx:request>. Tu devrais pouvoir t'en sortir maintenant
- - ton code ressemble à une version en français du mien, je crois que ça va bien t'aider
- je ne vois pas quand est-ce que tu as besoin de passer un objet avec deux string dans ton schéma. Mais je vais en profiter pour te donner un aperçu de ce qui se passe quand les types sont plus complexes
Operation :
Action Script
<operation name="confirmOrder" parameterOrder="idOrder aParams">
<input message="r:OrderInfo"/>
<output message="r:return"/>
</operation>
Message :
Action Script
<message name="OrderInfo">
<part name="idOrder" type="xsd:string"/>
<part name="aParams" nillable="true" type="r:Property"/>
</message>
Définition de Property :
Action Script
<complexType name="Property">
<sequence>
<element name="sName" type="string"/>
<element name="sValue" type="string"/>
</sequence>
</complexType>
Opération associée dans le Webservice :
Action Script
<mx:operation name="confirmOrder" result="confirmO(event)">
<mx:request>
<idOrder>12</idOrder>
<aParams>
<Property>
<sName>prix</sName>
<sValue>50</sValue>
</Property>
</aParams>
</mx:request>
</mx:operation>
Pas si complexe de créer un type complexe... Tu remarqueras l'analogie entre la définition des opérations et messages et la structure de mon <mx:request>. Tu devrais pouvoir t'en sortir maintenant
Page 1 sur 1
Connexion
Inscription