Pass-t SOAP service bidnings and WSDL

Hi,

We are using this WSDL as a basic one:

http://www.xignite.com/xcurrencies.asmx?WSDL

Agree, it is complex WSDL.

In Apigee we are going for the SOAP Pass-through option and posting the service.

After Apigee done some manipulation for the wsdl we expose wsdl from our Apigee, e.g. : https://apg.contoso.com/services/curr?wsdl

However, no client (.net, vs, java, or SoapUI) cannot consume this service:

Cannot extend an element-only type with a mixed type or vice-versa.

I did some more easy WSDL's and they work. (like weather).

We would like to hear community about this and what's wrong with the currency wsdl? I did some comparing, seems that Apigee removes every part of the content-type tag, e.g. application/xml, and also the <wsdl pre-tag: see picture:

Steps to reproduce:

- create simple pass-t SOAP service with the wsdl link I gave.

- try to consume your WSDL from apigee

Thanks for help

-D

7466-wsdl.png

1 3 424
3 REPLIES 3

Hi

I'm sorry you're having trouble with the WSDL import.

I think your analysis of the WSDL is not quite complete. You wrote: "Apigee removes the <wsdl pre tag"

What you are calling "the <wsdl pre-tag" is an XML namespace prefix. It's perfectly legal to transform an XML document to remove explicit prefixes and replace them with implicit namespaces. The XML Infoset of a document with implicit namespaces can be equivalent to the XML Infoset of a document with explicit namespace prefixes. The missing <wsdl "pre-tag" as you call it, is not the source of the error you are seeing.

What's likely the source of the error, or at least a source of ONE error, is the lack of content in the <input> elements for each operation in the "output WSDL".

Your WSDL uses "SOAP with Attachments" which was an extension to the basic SOAP standard; it was called "MIME Binding". It looks to me, that the importer used by Apigee Edge does not handle this extension. By my quick scan, the code correctly handles WSDLs that use Operations with input types that have a Message - eg standard SOAP. The code does not correctly handle Inputs that have multi-part forms, eg mime content. I don't know this for sure; I'm not an expert on this importer tool. But it sure looks like that, from what I see.

7489-screenshot-20181001-160752.png

To handle something that does SOAP with attachments, the wsdlimporter tool would have to examine the Input for a null Message, and then look for child elements and then parse them correctly. But it doesn't do that, currently.

If you'd like to raise a bug or file a pull request, this is the project:

https://github.com/apigee/wsdl2apigee

Hi Dino, thanks for support. Just to clarify - https://github.com/apigee/wsdl2apigee -- this is actually what I'm using in the Private Cloud Apigee when working with SOAP to SOAP?

I don't know about "SOAP to SOAP".

When you use thew WSDL Import Wizard in the Apigee Edge UI, you're using that code.