in reply to SOAP authentication

Have you tried debugging the HTTP interaction? See LWP::Debug and LWP::UserAgent on ->show_progress.

Personally, I would try having the username and password in the URL directly:

my $wsdl_url = "https://$username:$password\@xyz.com/download';

... and the same for the service URL.