Error creating Web Service Consumer

Hi

I am trying to create a web service consumer from an external web service created in .Net

I can successfully access this web service from a couple of test / validator sites such as

However when I attempt to create a web service consumber in DDE, I get the following error when trying to load the WSDL:

The request operation failed: Element {http://www.w3.org/2001/XMLSchema}schema is referenced but not defined.

I can only presume this is some subtle thing in the schema declarations that other platforms accept but Notes doesn’t like. While I can’t change the public WSDL, I could download it and modify it so that the consumer is created but I don’t know what the problem is. Any suggestions appreciated.

The WSDL contains the following at the start:

(some data removed to protect the innocent :wink:

<?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=“…external web service…”

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=“…external web service…”

xmlns:wsdl=“http://schemas.xmlsoap.org/wsdl/”>

wsdl:types

<s:schema elementFormDefault="qualified" targetNamespace="..external web service..">

  <s:element name="GetDealers">

    <s:complexType />

  </s:element>

  <s:element name="GetDealersResponse">

    <s:complexType>

      <s:sequence>

        <s:element minOccurs="0" maxOccurs="1" name="GetDealersResult">

          <s:complexType>

            <s:sequence>

              <s:element ref="s:schema" />

              <s:any />

            </s:sequence>

          </s:complexType>

        </s:element>

      </s:sequence>

    </s:complexType>

  </s:element>

.

.

. etc

Subject: A partial solution

It seems that the issue is to do with the definition for the returned values. .Net can apparently be set to define the return what are called DataSets, which are only defined at run-time.

So the problem is the following lines:

<s:element minOccurs=“0” maxOccurs=“1” name=“GetDealersResult”>

<s:complexType>

<s:sequence>

<s:element ref=“s:schema” />

<s:any />

</s:sequence>

</s:complexType>

</s:element>

This effectively says that the web service call will return an element called GetDealersResult, but that this will contain other elements. One of those elements will be a schema which will define the other elements.

Domino (and all Java based web service consumers) do not like this.

You can get the WSDL to import if you remove the line:

<s:element ref=“s:schema” />

Which results in stub classes being generated with the following code:

Class GetDealersResponse_GetDealersResult_n1 As XSD_ANYTYPE

Public any As NotesDOMElementNode



Sub NEW

End Sub

End Class

Maybe I’m biased because I’ve spent all day chasing this issue, but it seems like a lazy way to define a web service - define nothing up front and chuck it all in at run-time. Sure it’s flexible, but it’s also pretty pointless !

Now at least I have a consumer. I have to go and play, to see if it brings back anything useful that I can parse.

I’ll post an update later.