[framework 2.0] Problème de décodage réponse soap xml en c# [Résolu]

Signaler
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013
-
Verrisan
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013
-
Bonjour,


J'ai un Service Web auquel est liée une classe proxy. Dans cette classe proxy, j'utilise une méthode chercher(). Voir code ci-dessous:

...
string certPath = @"C:\cb\certificat\Test.cer";
...
NetworkCredential credentials = new NetworkCredential();
CredentialCache cache = new CredentialCache();
 
classProxy proxy = new classProxy();
 
.....
 
proxy.Url = @"https://....";
proxy.ClientCertificates.Add(X509Certificate.CreateFromCertFile(certPath));
 
credentials.UserName = username;
credentials.Password = password;
proxy.PreAuthenticate = true;
cache.Add(new Uri("https://...."), "Basic", credentials);
proxy.Credentials = cache;
proxy.EnableDecompression = true;
 
....
res = proxy.chercher(....);
....

Jusqu'à tout récemment, dès que la méthdoe chercher(I) est appelée, cela déclenchait une exception, car le fournisseur de la méthdoe retournait du text/html dans Content-Type du Header. Ce dernier a corriger son problème et retourne du text/xml dans Content-Type du Header et cela ne déclenche plus d'exception, mais le problème est que ma variable "res" est toujours affectée à null. Pourtant avec le "sniffer" HTTP Analyser v2, je vois qu'il y a une réponse qui m'est retourné. J'ai l'impression que c# n'accepte cette réponse.


Est-ce quelqu'un aurait un idée de quoi cela pourrait venir et comment corriger ceci afin que la variable res soit correctement affectée.


D'avance merci beaucoup pour votre aide!


Cédric

6 réponses

Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Hello,

Le Service Web auquel je faisais référence va changer et peut être que mon problème n'existera plus!

En tout cas, merci pour votre aide!

Cédric
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
79
Salut,


Heu là comme ça, ça risque d'être dur. Tu as regénéré le proxy depuis la mise à jour du service web ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Salut Coq,

Non, car le classe proxy a été générer du fichier *.wsdl que le fournisseur m'avait fourni et ce dernier m'a affirmé que le fichier reste le même.

En comparant ce fichier avec d'atures fichiers wsdl, il y a un élément qui manque dans l'élément "opération" qui est l'attribut "soapaction". Est-ce que l'existance de cette attribut pourrait avoir une influence de mon problème?

D'avance, merci pour ton aide!

Cédric
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Salut Coq,

voilà j'ai enfin reçu un nouvel mise à jour de mon fichier wsdl, mais le problème persiste toujours! Est-ce que les nampeace manquant ou déclaré pourrait jouer un rôle dans le fait que j'ai toujours une réponse null dans ma variable res.

D'avance merci pour ton aide!

Cédric
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Bonjour tout le monde,


lorsque j'ai généré mon fichier source *.cs et que je veux ensuite le compiler avec l'outil csc.exe (versions 1.1 ou 2.0 du framesork, le problème reste le même), j'ai le message suivant qui apparaît:




Framework 1.1
error CS0519: Conflit entre 'System' et l'espace de noms prédéfini


Framework 2.0
warning CS0437: Le type 'System' dans 'c:\...cs' est en conflit avec l'espace de noms import‚ 'System' dans 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll'. Utilisation du type.

Est-ce que quelqu'un saurait comment on peut reféfinir une classe nommé "System" afin quel ne rentre pas en confilt avec la classe "System" de c#, tout en sachant qu'elle doit garder le même nom.


D'avance merci pour votre aide!


Cédric
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
79
Salut,

Le "System" du Framework .NET (pas de C#) est un espace de nom, pas une classe.
Il est déconseillé de l'utiliser en temps que nom pour un espace de nom ou un type, pour ce genre de raison.

Si tu ne peux vraiment pas renommer ceci (voir si avec une génération du proxy directement via wsdl.exe tu ne peux pas faire quelquechose), tu devrais sans doute remplacer dans le proxy toutes les références à System (l'espace de nom de la BCL .NET) par global::System afin d'éviter le conflit.

/*
coq
MVP Visual C#
CoqBlog
*/