web-servicesdelphiwsdldelphi-xe

Too many parameters in method... (connecting to WebService from WSDL in Delphi XE)


There is an external Web service, respectively, requires the client to him. Based on the WSDL standard for shell Embarcadero RAD Studio XE (Delphi XE) created a unit that usually works well, but in this case there is a caveat - in one of the functions transferred to more than 100 parameters. When you create an object for calling a web service at runtime get an error "Too many parameters in method 'method name'". If the number of parameters is reduced to 61, then everything starts to work - calling a web service runs fine and returns a response. Why is this happening? Turned the internet, but the results of zero.


Solution

  • It's happening for exactly the reason the error message says. There are too many parameters. The code generator for the SOAP wrapper (in Rio.pas) will only allow 252 bytes to be pushed onto the stack to call the wrapped method, which translates to 63 pointer-sized parameters. (Larger parameters may require more bytes, reducing the total number of allowed parameters.)