tags:

views:

201

answers:

1

Hi,

I've been trying to get a soap server up that implements (is that the correct term?) a wsdl specification made by a third party. I have used Delphi's wsdl importer. (Part of) the generated code looks like this:

miniPortType = interface(IInvokable)
['{824D172A-9C1F-D202-5B21-4C324553BCF0}']

  // Cannot unwrap: 
  // - Input element wrapper name does not match operation's name
  function miniService(const aMessage: MiniMessageType): MiniAnswerType; stdcall;
end;

When called, the server says that "No method named 'MiniMessageType' is supported by interface 'miniPortType'".

I can only get this to work by making the name of the function and name of the main element of the message the same.

I think it should be possible to have different names. At least soapUI doesn't complain. And I actually have no choice but to implement the wsdl as is. Does anybody know how I can work around this?

I'm using Delphi 2007.

Thanks, Miel.

A: 

If I recall correctly, the SOAP interface is actually defined in a "table" at the bottom of the definitions, and it is this which is used to do the conversion between Delphi types and SOAP types in the communications. I've "corrected" this sort of thing in the past by manually changing the table building calls, but you have to be careful, and may also need to mangle the SOAP text at the appropriate point to make it all fit.

mj2008