Ok - I've gotten a little further along the way. The SOAP server returns a 501 when it receives no authentication details, not a 401. Therefore LWP::UserAgent doesn't submit the credentials. I hard-coded the u/p in the set_proxy call in the interface Class and then the SOAP calls worked. My soft-coded workaround is: