views:

326

answers:

1

Hi there, I'm trying to add a web reference to an external Axis - generated web service to a Visual Studio 2008 solution. The url I received points to a WSDL that I can successfully access through a browser, and I see all the WService details. The Axis version used was 1.4.

But if I run wsdl.exe or when I add the reference in VS2008 I can see the methods list on the left, but I get an error stating that:


The document at the url http://............?wsdl was not recognized as a known document type.

The error message from each known type may help you fix the problem:

  • Report from 'DISCO Document' is 'Discovery document at the URL http://.........?wsdl could not be found.'.
    • The document format is not recognized.
  • Report from 'WSDL Document' is 'There is an error in XML document (510, 62).'.
    • Namespace prefix 'impl:urn' is not defined.
  • Report from 'XML Schema' is 'The root element of a W3C XML Schema should be and its namespace should be 'http://www.w3.org/2001/XMLSchema'.'."


And I cannot proceed. I saw other posts here on SO but all of them are referring to a situation in which the web reference is already added.

Many thanks in advance!

A.

EDIT: Thanks guys, actually I managed to solve the issue "by hand" as in some way was suggested by dovholuk: I capured the wsdl, saved it loccally in file system, then I modified it by hand, until wsdl.exe was able to generate the classes. Then I added the class in the project, and managed to call the web service.

Ciao Andrea

+1  A: 

This is a common problem that I experience when using axis 1.4. I personally always code my wsdl and xsd by hand instead of using the emitting capability for this - and other reasons...

If you open your ?wsdl and start parsing through I would bet that you have some enumeration in there which is "empty". Something like:

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

i'm really just guessing here because you didn't post the wsdl (not sure if you can?) but I get this exact behavior when I write my wsdl/xsd and have restrictions on simple types... such as:

<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>

( don't kill me if that's invalid xsd - i'm just going from memory... :) )

Axis will suck this in, create objects but when it gets emitting using ?wsdl it comes out 'invalid'....

So my advice is to comb through that wsdl - particularly the types section for 'incomplete' schema definitions... Take them out of your java and 'try again' until it works in c#....

Don't know if that helps or not - but if you need any other ideas, post back...

dovholuk