2009-09-25 4 views
3

J'essaie d'ajouter une référence Web à un externe Axis - service Web généré à une solution Visual Studio 2008. L'URL I a reçu des points à un WSDL que je peux accéder avec succès à travers un navigateur, et je vois tous les détails de WService. La version Axis utilisée était 1.4.Consommer un service Web généré par l'axe d'une solution VS2008 en C#

Mais si je cours wsdl.exe ou quand j'ajoute la référence en VS2008 je peux voir la liste des méthodes sur la gauche, mais je reçois une erreur indiquant que:


Le document à l'adresse http://............?wsdl n'a pas été reconnu comme un type de document connu.

Le message d'erreur de chaque type connu peut vous aider à résoudre le problème:

  • Rapport de « DISCO document » est « document de découverte à l'adresse http://.........?wsdl n'a pu être trouvée. ».
    • Le format de document n'est pas reconnu.
  • Le rapport de 'Document WSDL' est 'Il y a une erreur dans le document XML (510, 62).'.
    • namespace prefix 'impl: urne' est pas définie.
  • Rapport de 'XML Schema' est 'L'élément racine d'un schéma XML du W3C devrait être et son espace de nom doit être' http://www.w3.org/2001/XMLSchema. ». »

Et je ne peux pas continuer. J'ai vu d'autres messages ici sur le SO, mais tous font référence à une situation dans laquelle la référence Web est déjà ajouté.

un grand merci à l'avance!

A.

EDIT: Merci les gars, en fait, j'ai réussi à résoudre le problème "à la main" comme dovholuk suggéré: j'ai capté le wsdl, enregistré localement dans le système de fichiers, puis je l'ai modifié à la main, jusqu'à wsdl.exe était capable de générer les classes. Ensuite, j'ai ajouté la classe dans le projet, et j'ai réussi à appeler le service Web.

Ciao Andrea

Répondre

3

Ceci est un problème commun que je fais l'expérience lors de l'utilisation axe 1.4. Personnellement, je code toujours mon wsdl et xsd à la main au lieu d'utiliser la capacité d'émission pour cela - et d'autres raisons ...

Si vous ouvrez votre? Wsdl et commencer à analyser, je parie que vous avez une énumération là-bas qui est vide". Quelque chose comme:

<xs:simpleType name="MyType"> 
</xs:simpleType> 

je suis vraiment juste deviner ici parce que vous ne publiez pas le fichier WSDL (pas sûr si vous le pouvez?) Mais j'obtenir ce comportement exact quand j'écrire mon wsdl/xsd et des restrictions sur types simples ...tels que:

<xs:simpleType name="IpAddress"> 
    <xs:restriction base="xs:string"> 
    <xs:pattern value="\d*"> (note this is not 'correct' i'm just 'for instancing') 
    </xs:restriction> 
</xs:simpleType> 

(ne me tuez pas si c'est xsd invalide - je vais juste de la mémoire ... :))

Axis va sucer ce, créez des objets, mais quand il obtient ? émettant en utilisant wsdl il sort « invalide » ....

donc, mon conseil est de passer au peigne fin que wsdl - en particulier la section types de définitions de schéma « incomplet » ... Sortez-les de votre java et « essayer encore 'jusqu'à ce qu'il fonctionne dans C# ....

Je ne sais pas si cela aide ou pas - mais si vous avez besoin de autres idées, de retour ...