Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

WSE 3 and C++ Builder

9 views
Skip to first unread message

Sig

unread,
May 7, 2007, 6:58:43 PM5/7/07
to
Hi all,

I have written a web service server using VS C# and WSE 3.0. The service
is used for large file transfer. Everything works perfectly between .NET
applications and the server.

Is it possible to build a Win32 client in BCB6 to use such services?
I've tried simply import WSDL. However transfered data size is always 1
byte. Any help would be appreciated.

Jean-Marie Babet

unread,
May 10, 2007, 8:36:53 PM5/10/07
to
Hello Sig,

Whether you can interop with the service using BCB depends on how the
Service exposes the file. There are many options for exposing the contents
of a file:

1. As a string
2. As an array of bytes
3. As an attachment

CBuilder supports the first two approaches. Item #3 will not work with
CBuilder as attachment support was added after BCB6. And even if you do use
a later version, it probably won't work with WSE as CBuilder's support for
attachment is based on the MIME attachment which is not what WSE supports
(WSE probably supports DIME or MTOM??).

If you have a WSDL for the service it's possible to infer how the service
exposes the file from that document. If you can point me to (or email a copy
of) the WSDL, I'd be happy to look at it and provide more information.

Cheers,

Bruneau.


Sig

unread,
May 11, 2007, 12:48:54 PM5/11/07
to


Hello Bruneau,

Thank you for your reply. WSDL Importer generates code to use the
service functions as an array of bytes. It works very nicely with
BDS2006 but fails with BCB6. I sent you an e-mail with WSDL attached. It
would be nice to get it work with BCB6 as we still use it in production.

The code generated by WSDL imported looks like this:

__interface INTERFACE_UUID("{CFE467D4-A39E-2BD2-5836-7685A9E27F8D}")
Service1Soap : public IInvokable
{
public:
virtual AnsiString SayHello() = 0;
virtual TByteDynArray ReceiveFile(const AnsiString fileName) = 0;
virtual void SendFile(const TByteDynArray data, const
AnsiString FileName) = 0;
};
typedef DelphiInterface<Service1Soap> _di_Service1Soap;

_di_Service1Soap GetService1Soap(bool useWSDL=false, AnsiString addr="");

Thank you,
Sig

Sig

unread,
May 11, 2007, 1:01:23 PM5/11/07
to

Jean-Marie Babet

unread,
May 11, 2007, 2:29:33 PM5/11/07
to
Hello,

I have received the email. Thank you. I'll make some time to investigate
this today. Unfortunately, it's probably something we've fixed in the
runtime. Hopefully I can identify the change you'll need to move over.

Cheers,

Bruneau.


0 new messages