It seems that Morfik has problems importing the WSDL of SOAP webservices created in Delphi XE2 and above. I have attached the WSDL for a simple test webservice created in Delphi XE4. When I attempt to import this in Morfik 3.0.8.1, the Methods list on the second page ("Web Service Content") of the webservices wizard is empty. If I go ahead and have it create the interface unit anyway, the class TIWebService1serviceSoapIntf in the created unit IWebService1service contains no methods. I get the same behaviour in Morfik 2.4.0.6. Morfik 1.4.0.1, on the other hand, is able to import the WSDL.

It seems that Morfik has problems importing the WSDL of SOAP webservices created in Delphi XE2 and above. I have attached the WSDL for a simple test webservice created in Delphi XE4. When I attempt to import this in Morfik 3.0.8.1, the Methods list on the second page ("Web Service Content") of the webservices wizard is empty. If I go ahead and have it create the interface unit anyway, the class TIWebService1serviceSoapIntf in the created unit IWebService1service contains no methods. I get the same behaviour in Morfik 2.4.0.6. Morfik 1.4.0.1, on the other hand, is able to import the WSDL.

I have had no luck importing any WSDL period. It took me several hours to figure out how the connection is created and sent. I learned very quickly that morfik injects some of its own formatting into WSDL's that are seemingly imported correctly, after several more hours of testing I learned that I could not remove these headers without rewriting code in SystemXML so, now all of my WebServices are custom written and sent via "SendSoapHTTPRequest" or "THTTPSend.HTTPMethod" Directly. Parsing the return sucks, however it is fast and works exactly as it should. In a nutshell, my workaround was figuring out if the Server wanted XML, JSON, or some other Hybrid (yes I have a bank connection that is just weird with its format requirements), figuring out what their options are and testing the responses. It definitely took less time than fixing morfik code...

28075

Hello,

I have had no luck importing any WSDL period. It took me several hours to figure out how the connection is created and sent. I learned very quickly that morfik injects some of its own formatting into WSDL's that are seemingly imported correctly, after several more hours of testing I learned that I could not remove these headers without rewriting code in SystemXML so, now all of my WebServices are custom written and sent via "SendSoapHTTPRequest" or "THTTPSend.HTTPMethod" Directly. Parsing the return sucks, however it is fast and works exactly as it should. In a nutshell, my workaround was figuring out if the Server wanted XML, JSON, or some other Hybrid (yes I have a bank connection that is just weird with its format requirements), figuring out what their options are and testing the responses. It definitely took less time than fixing morfik code...

The funny thing is, we *were* able to import WSDL from an earlier Delphi version (I think it was Delphi XE) into Morfik without any problems. So I assume that Embarcadero have changed something in their WSDL output. (Unfortunately I don't have a copy of Delphi XE available to test with.) Fortunately we still have the modules that Morfik generated for our webservices when we were using Delphi XE -- and these still work now that our webservices have been recompiled in Delphi XE2+. However, every time we add a new webservice in Delphi, we have to modify the modules by hand in Morfik to take the new webservice into account.

What would be great is if someone has both Delphi XE (or earlier) and Delphi XE2 (or later) installed, and could generate a WSDL file for a simple webservice in both. I could then compare the two WSDL files and maybe figure out a way to tweak Delphi XE2's WSDL output to make it compatible with Morfik.

Thanks for the tip about custom-writing the webservices -- we may end up going this way if we don't find a better solution.

Best regards,(Another) Timothy :-)

28098

Hi Timothy,

Thanks for the reply.

The funny thing is, we *were* able to import WSDL from an earlier Delphi version (I think it was Delphi XE) into Morfik without any problems. So I assume that Embarcadero have changed something in their WSDL output. (Unfortunately I don't have a copy of Delphi XE available to test with.) Fortunately we still have the modules that Morfik generated for our webservices when we were using Delphi XE -- and these still work now that our webservices have been recompiled in Delphi XE2+. However, every time we add a new webservice in Delphi, we have to modify the modules by hand in Morfik to take the new webservice into account.

What would be great is if someone has both Delphi XE (or earlier) and Delphi XE2 (or later) installed, and could generate a WSDL file for a simple webservice in both. I could then compare the two WSDL files and maybe figure out a way to tweak Delphi XE2's WSDL output to make it compatible with Morfik.

Thanks for the tip about custom-writing the webservices -- we may end up going this way if we don't find a better solution.