Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
998 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Probleme Webservice serialisation AXIS --> Client .Net C#

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme Webservice serialisation AXIS --> Client .Net C#

n°1593696
STARIS79
Posté le 31-07-2007 à 12:12:14  profilanswer
 

Bonjour à tous,
Je doit consommer, dans une page asp .net en c#, un webservice java (AXIS) qui propose plusieurs méthodes demandant en paramètre et retournant en réponse, des objets complexes, issue du wsdl de ce webservice.
 
J'utilise visual studio 2005, j'ai donc intégrer ce webservice et créant une classe avec le programme wsdl.exe. Je retrouve dans la classe générée les objets et les méthodes proposées par ce webservice.
 
Une des méthodes ne demande pas de paramètre et retourne un entier, j'arrive à recevoir une réponse correcte, donc les échanges fonctionnent.
 
En revanche les autres méthodes qui demandent et retournent des paramètres de type complexe, ne fonctionnent pas.
 
En fait, il n'y a pas d'erreur de générée, mais l'objet retourné est instancié mais ces variables ne sont pas affectées.
 
Voici le lien du webservice utilisé, la méthode sur laquelle je fais mes essais est getPegasusVersionInfo() :
http://cattest.tecdoc.net/pegasus- [...] CatWL?wsdl
 
le code appelant la méthode :

Code :
  1. TecdocToCatSkeletonService t = new TecdocToCatSkeletonService();
  2.        VersionInfoRequest p = new VersionInfoRequest();
  3.        p.provider = -1;
  4.        VersionInfoResponse resp = t.getPegasusVersionInfo(p);


 
Voici mes objets :
 

Code :
  1. //Objet en entrée
  2. [System.SerializableAttribute()]
  3. [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://datatype.cat.tecdoc.net" )]
  4. public partial class VersionInfoRequest : VersionInfoRequestSrc {
  5.    
  6.     private int providerField;
  7.    
  8.     /// <remarks/>
  9.     public int provider {
  10.         get {
  11.             return this.providerField;
  12.         }
  13.         set {
  14.             this.providerField = value;
  15.         }
  16.     }
  17. }
  18. //Objet en sortie
  19. [System.SerializableAttribute()]
  20. [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://datatype.cat.tecdoc.net" )]
  21. public partial class VersionInfoResponse {
  22.    
  23.     private int buildField;
  24.    
  25.     private string dateField;
  26.    
  27.     private int majorField;
  28.    
  29.     private int minorField;
  30.    
  31.     private int revisionField;
  32.    
  33.     private int statusField;
  34.    
  35.     private string statusTextField;
  36.    
  37.     /// <remarks/>
  38.     public int build {
  39.         get {
  40.             return this.buildField;
  41.         }
  42.         set {
  43.             this.buildField = value;
  44.         }
  45.     }
  46.    
  47.     /// <remarks/>
  48.     [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
  49.     public string date {
  50.         get {
  51.             return this.dateField;
  52.         }
  53.         set {
  54.             this.dateField = value;
  55.         }
  56.     }
  57.    
  58.     /// <remarks/>
  59.     public int major {
  60.         get {
  61.             return this.majorField;
  62.         }
  63.         set {
  64.             this.majorField = value;
  65.         }
  66.     }
  67.    
  68.     /// <remarks/>
  69.     public int minor {
  70.         get {
  71.             return this.minorField;
  72.         }
  73.         set {
  74.             this.minorField = value;
  75.         }
  76.     }
  77.    
  78.     /// <remarks/>
  79.     public int revision {
  80.         get {
  81.             return this.revisionField;
  82.         }
  83.         set {
  84.             this.revisionField = value;
  85.         }
  86.     }
  87.    
  88.     /// <remarks/>
  89.     public int status {
  90.         get {
  91.             return this.statusField;
  92.         }
  93.         set {
  94.             this.statusField = value;
  95.         }
  96.     }
  97.    
  98.     /// <remarks/>
  99.     [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
  100.     public string statusText {
  101.         get {
  102.             return this.statusTextField;
  103.         }
  104.         set {
  105.             this.statusTextField = value;
  106.         }
  107.     }
  108. }
  109. //Methode appellée
  110.     [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="urn:axis.server.cat.tecdoc.net", ResponseNamespace="urn:axis.server.cat.tecdoc.net", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
  111.     [return: System.Xml.Serialization.XmlElementAttribute("getPegasusVersionInfoReturn",Form = System.Xml.Schema.XmlSchemaForm.Unqualified,IsNullable=true, Type=typeof( VersionInfoResponse) )]
  112.     public VersionInfoResponse getPegasusVersionInfo(VersionInfoRequest in0)
  113.     {
  114.         try
  115.         {
  116.             object[] results = this.Invoke("getPegasusVersionInfo", new object[] { in0 });
  117.             return (VersionInfoResponse)results[0];
  118.         }
  119.         catch (Exception e)
  120.         {
  121.             throw new Exception();
  122.         }
  123.     }


 
 
Merci pour votre aide.


Message édité par STARIS79 le 01-08-2007 à 09:14:02
mood
Publicité
Posté le 31-07-2007 à 12:12:14  profilanswer
 

n°1594015
moi23372
Posté le 31-07-2007 à 21:47:50  profilanswer
 

déjà pas besoin d'utiliser wsdl.exe
 
tu créer une WebRéférence et il créara tout pour toi. Essaye déjà comme cela.
moi perso, je n'ai jamais eu de prob avec les objets complexes entre AXIS et .NET.
Maintenant, si ça passe coté java, ça doit arrivé normalement sans trop de problème coté .NET...  
 
Sinon, va faloir faire une désérialisation manuelle en implémentant l'interface ISerializable

n°1594189
STARIS79
Posté le 01-08-2007 à 09:13:39  profilanswer
 

J'ai besoin de wsdl.exe car en intégrant le webservice et tant que référence web, ces méthodes me retournent un objet ayant la valeur null (J'étais parti sur cela aussi au début). En l'implémentant dans une classe, j'ai la possibilité de modifier quelques valeurs pour avancer.
 
Les résultats de cette recherche sont les suivantes :
 
- Les méthodes issues de la classe générée me retournait la même valeur null, en ajoutant "Form = System.Xml.Schema.XmlSchemaForm.Unqualified", cela m'instancie un objet mais les valeurs ne sont pas affectées.
 
- Sur les rares forums parlant du sujet il 'agirait d'un problème de namespace, j'ai essayé plein de combinaison sans succès.  
 
- Si je retourne le type objet au lieu de VersionInfoResponse, je reçoit un tableau de xmlnodes, chacun contenant les valeurs des variables à affecter. Je reçois donc bien une réponse du web service, mais la sérialisation pose problème.
 
Le wsdl est à votre diposition si vous voulez faire des essais :  
 
http://cattest.tecdoc.net/pegasus- [...] CatWL?wsdl
 
Merci.

n°1594637
moi23372
Posté le 01-08-2007 à 21:23:10  profilanswer
 

tu pourrais poster la classe que tu tentes de passer sur le réseau? (ton code java, ou tu code C++). Enfin, l'objet que tu envoie depuis ton WebService. Le code de celui-ci.
 
De plus, ton WS, il est écrit en quoi? tu génères ton WSDL avec quoi? etc...


Message édité par moi23372 le 01-08-2007 à 21:28:42

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Probleme Webservice serialisation AXIS --> Client .Net C#

 

Sujets relatifs
Probleme avec DISTINCT / MySQLprobleme caractere (fonction mail)
probleme de confirmation par mailProblème de redirection malgrès de gros effort sur un header en flash.
c# problème formatage fichier texteProbleme de parser XML / XSLt - Doublons
Problème de comparaison de mots de passe MySQLProblème de div sous Firefox
problème de retour à la ligne dans htpasswdProblème pour écrire dans une table!
Plus de sujets relatifs à : Probleme Webservice serialisation AXIS --> Client .Net C#


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR