First, this is not quite on topic here, so you may get better responses
somewhere else.
Nevertheless, we have experimented with gsoap in the past. In principle it
was working, though it was a bit slow (probably this is inherent for SOAP)
and required some twiddling for passing utf-8 and binary data, and the
generated code seemed quite fragile. It also had some licensing issues
IIRC. We have now switched over to other communication protocols (not
necessarily better!) so I cannot comment on the current status.
gSOAP does seem to be the only reasonable alternative for C or C++.
That's unfortunate though because it's really a fragile library that
doesn't seem to me to be very well done. It's got a lot of
documentation, but unfortunately none of it is that good. Which of
the 5 different functions to use for deleting stuff should be used for
different conditions for example is difficult to find. There's no
reference material, only a long tutorial like thing that seems to me
to be rather incomplete.
The code it generates is rather convoluted, or at least for what I've
used it for. This may not be entirely gSOAP's fault since I believe
the people who made the SOAP interface I'm working with did a poor job
as well. For example, the user/pass strings that go in the soap
request are labeled as "optional" and thus gsoap makes them
std::string * members in the structures when you do C++. Speaking of
which, the C++ code it generates is just crappy so you may as well
stick with the C.
Unfortunately, this later bit causes some issues as well since it's
structures are all built differently if you're compiling in C vs. C+
+. This caused me a bunch of troubles, at link time because of
course .c files are compiled as C and anything else I'm doing is in C+
+, including the bits that include files that have the soap structures
defined. Thus some parts of the program end up thinking things like
that there's destructors and vector members in the context while other
parts of the program do not.
This caused me all kinds of problems until I just decided to change
the names of the generated files. It would have been much better if
they'd just written the thing in C, but no...gotta do both.
If there was another option that was still maintained I'd certainly
use it. Unfortunately there's not much.