Thanks. everything seems to work up to the last step. Nothing to do with the typo there, but having to do with the funny way vmware uses soap. The documentation is next to useless you already know the answer. Regardless I'm slowly working through it. Just need to work out the steps in a soap session to do what I need to do and how parameters map to the yaws_soap_lib calls. Something hasn't quite clicked yet.

Thanks for the help,
Jeff.

On 5/02/10 12:18 AM, Willem de Jong wrote:
Hi Jeff,

The first test you did failed because of a typo, I think. There is one slash too many.

Even with the correct file name you will need to modify the WSDL a little bit, I am afraid. I didn't look at it in detail, but it looks like the import statement is not processed correctly. 

You should put the content of vim.wsdl inside vimService.wsdl, at the location of the import statement. You have to exclude the top level <definitions> element from vim.wsdl, obviously, and you also have to declare the vim25 namespace. The first bit of the resulting WSDL should look like this:

<definitions targetNamespace="urn:vim25Service"
   xmlns="http://schemas.xmlsoap.org/wsdl/"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:interface="urn:vim25"
   xmlns:vim25="urn:vim25"
>
   <types>
      <schema
         targetNamespace="urn:vim25"
         xmlns="http://www.w3.org/2001/XMLSchema"

etc (over 42000 lines...).

I called the resulting file testVim.wsdl.

Then I did:

1>  TestWsdl = yaws_soap_lib:initModel("testVim.wsdl").
{wsdl,[{operation,"VimService","VimPort",
                  "CheckRelocate_Task","VimBinding",
                  "https://localhost/sdk/vimService","urn:vim25/4.0"},
       {operation,"VimService","VimPort","CheckMigrate_Task",
                  "VimBinding","https://localhost/sdk/vimService",
                  "urn:vim25/4.0"},
....

Next:

2> yaws_soap_lib:write_hrl(TestWsdl, "vim.hrl").
ok.

This creates a .hrl file with record declarations. It will be unavoidable to have a look at those, and the WSDL (or the documentation provided by vmware).

If you want to call the "CurrentTime" service, it will look like this:

3> yaws_soap_lib:call(TestWsdl, "CurrentTime", [{'p:CurrentTimeRequestType', [], {'p:ManagedObjectReference{[], "test", "test"}}], []).  
{error,conn_failed}

Good luck,
Willem