Why am I getting "Exception: (404, u'Not Found')" with Suds
Question: I am trying to connect to SugarCRM soap services (what's the correct
terminology?) using Suds:

    
    
    from suds.client import Client
    
    url = "http://localhost/sugarcrm/soap.php?wsdl"
    client = Client(url)
    session = client.service.login("usr", "pwd")
    

But the very last line throws an exception:

    
    
    ERROR:suds.client:<?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:ns3="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://www.sugarcrm.com/sugarcrm" xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
       <SOAP-ENV:Header/>
       <ns2:Body>
          <ns1:login>
             <user_auth xsi:type="ns1:user_auth">usr</user_auth>
             <application_name xsi:type="ns3:string">pwd</application_name>
          </ns1:login>
       </ns2:Body>
    </SOAP-ENV:Envelope>
    Traceback (most recent call last):
      File "python.py", line 5, in <module>
        session = client.service.login("usr", "pwd")
      File "/usr/lib/pymodules/python2.6/suds/client.py", line 542, in __call__
        return client.invoke(args, kwargs)
      File "/usr/lib/pymodules/python2.6/suds/client.py", line 602, in invoke
        result = self.send(soapenv)
      File "/usr/lib/pymodules/python2.6/suds/client.py", line 653, in send
        result = self.failed(binding, e)
      File "/usr/lib/pymodules/python2.6/suds/client.py", line 714, in failed
        raise Exception((status, reason))
    Exception: (404, u'Not Found')
    


Answer: Try passing also the argument `location=url` to the `Client` constructor.
Sometimes the location element in WSDLs doesn't match up with URI on the
server.

    
    
    client = Client(url, location=url)
    

