Re: [soaplite] Trying to use XML-RPC through COM...
- Hi Loren,
--- Loren Amelang <loren@...> wrote:
> that it is time to ask for some help. What I originally set out toI'll try to address your questions one by one.
> do was
> call the XML-RPC capability of SOAP::Lite from my MSVC++6 app.
> First I discovered that using MSVC++ #import on Lite.dll producedQuite possible. '.' is allowed in the name of COM object; I'll think
> errors I couldn't get past:
> 1 - C++ complains about the '.' in the name of "coclass SOAP.Lite",
> insisting on giving it a "member reference" meaning.
about changing it to something else, but it will break the
> 2 - C++ complains about the "SOAP.Lite->new" method name, insistingcreate()/soap() methods are provided as synonim for new() for this
> that "new" is a C++ reserved word.
case. Both do the same. If you scan SOAP/Lite.pm for SOAP::Lite::COM
package you'll see the details.
> So I struggled through the C++ example of calling the "Hello,I'm not sure it helps in your case, but there is an example in c#
> control using runtime access, and was able to make it work. But
(examples/COM/remote.cs) that uses COM interface.
> 1 - The probably trivial problem of how to convertprobably something like this will work (VB):
> "->getTemp(SOAP::Data->name('zipcode')->type(string => $ZipCode))"
> something that OLE can handle. I really haven't spent much time
> looking for
> the answer, but if someone knows, I'd like to hear about it.
CreateObject("SOAP.Lite").data("name", "zipcode", _
"type", "string", "value", ZipCode)
> 3 - The current main problem... As long as I use my modifiedIt seems like XMLRPC::Lite module is not availble when you create
> Lite.dll, I
> can use the "new" method or the "soap" method successfully through
> OLE, but
> when I try to use the "xmlrpc" method, it always dies during the
> "CreateObject" call.
your dll. if you use make-com-standalone.bat or make-com-minimal.bat
file (both from examples/COM directory) to create your dll you
shouldn't have this problem
> I don't see where the COM dispatch IDs get numbered, not explicitlyI don't know how to answer this either.
> or by
> position in Lite.ctrl, or in Lite.pm. But C++ retrieves the same
> I also don't understand how SOAP::Lite finds XMLRPC::Lite when theIt loads XMLRPC::Lite directly when you call xmlrpc() method, but it
> method is called through OLE. When using Perl directly, you "use
> XMLRPC::Lite" explicitly.
has to be compiled in Lite.dll already. It's included in Lite.ctrl
script (if you use standalone version). Be sure you use ctrl files
> And I just realized I haven't tried rebuilding Lite.dll hereThat's the last available version for COM interface.
> modifying it - maybe there is some version conflict between my
> 0.55 and my Lite.dll from "11/5/2001" (freshly downloaded from the
> web), or
> the files that came with ActivePerl 18.104.22.1683... I just checkedThat's the version that comes with ActivePerl. If you install 0.55
> the Perl
> "VPM" and it says the current SOAP::Lite package is 0.52, not 0.55
manually, information in VPM will not be updated.
> - is this a problem?Shouldn't be. Just be sure you use COM directory from v 0.55
> Are any of these good leads? Am I missing something painfullyNo. This should work except issue with dot in "SOAP.Lite" which makes
> obvious? Or
> am I trying to do something that just isn't likely to work...
it difficult/impossible to use directly from MSVC++.
> that can do both is very attractive. Hope I can get this to work.Hope this was helpful. If not, I'll try to dig more into it. Let me
> Any clues appreciated!
know if you make any progress, I'll document it or add some examples.
Best wishes, Paul.
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!