I ran into an issue where the SOAP API just stopped working. Turns out that http://schemas.xmlsoap.org/soap/encoding/ was down, and the SOAP API references it. So, in order to get rid of this additional third party dependency, I have been trying to rewrite our communication bridge using the XML-RPC API instead.
For the past 24 hours I have been fighting with the Magento XML-RPC API, thinking that it was the API that was flaky, but it turns out the issue was with Zend_XmlRpc auto-conversion.
Now for the juicy party. To get the XML request to be correctly formatted you need to force the associative array to be a Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT and wrap it in an array().
.... // Create new customer $new_customer = array( 'firstname' => $first_name, 'lastname' => $last_name, 'email' => $email, 'password_hash' => $password, 'store_id' => 0, 'website_id' => 0 ); $new_customer_id = $this->client->call('call', array($this->session, 'customer.create', array(Zend_XmlRpc_Value::getXmlRpcValue($new_customer, Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT)))); ....