I am using the SOAP client in yaws_soap_lib, since it supports WSDL. Very nice, by the way.
I just had two issues while using it:
1. It does not support requests through HTTP proxies, and even overwrites the HTTP settings I set before. I made a small hack (using the process dictionary), but a permanent solution would be nice.

2. In the WSDL I got, the name of the operation is not the same as the name of the request message. These should be related in the binding, but the binding is not available in the WSDL model (from yaws_soap_lib:initModel/1), so it cannot even be used. I had to make the name of the operation the same as the name of the request message in order to get it working. The current version will try to make a message of a type that is the same as the operation, but this is usually (I would say) not correct. So I think the binding should be preserved in the model, perhaps with the operation. This would require changes in the records, I guess, so I made an alternative WSDL and modified the operation name. I am not sure what the impact of modifications of the records would be, so I kept away from that.

Could this be fixed in a new version? Or should I implement a fix (when I have time, i.e. not this week, that's why I made the hacks), send it in, and see it integrated in the "official" version?