title: SAXParseException on file header with SUDS consuming SOAP service - how to consume soap properly?
body: <p>Using a mac with Python 2.7.5 and suds==0.4</p>
  
  <p>I am using suds (for the first time) to consume a soap web service using the wsdl. I am confused by the response when I request the XML raw as it fails to parse.</p>
  
  <pre><code>from suds.client import Client
  from datetime import datetime
  
  client = Client('http://domeintabellen-idsw-ws.rws.nl/DomainTableWS.svc?wsdl')
  request = client.factory.create('ns1:GetDomainTableNamesRequest')
  today = datetime.today()
  request.CheckDate = today
  result = client.service['basic'].GetDomainTableNames(request)
  </code></pre>
  
  <p>This gives me an error:</p>
  
  <pre><code>SAXParseException: &lt;unknown&gt;:2:43: not well-formed (invalid token)
  </code></pre>
  
  <p>I set the client to return the xml without parsing it to a python object:</p>
  
  <pre><code>client.set_options(retxml=True)
  </code></pre>
  
  <p>I get a return which I could manually parse. However I would like "it" to work properly and also understand better what the problem is.</p>
  
  <p>The XML returned is as follows and seems to contain some headers. I noticed the +id in the uuid is being raised after each request.</p>
  
  <pre><code>--uuid:1d4b4778-364c-4743-8eb3-d72a1e3f7747+id=28
  Content-ID: &lt;http://tempuri.org/0&gt;
  Content-Transfer-Encoding: 8bit
  Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
  
  &lt;s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;s:Body&gt;&lt;GetDomainTableNamesResponse xmlns="http://rws.services.nl/DomainTableWS/2010/10"&gt;&lt;GetDomainTableNamesResult xmlns:a="http://rws.services.nl/DomainTableWS/Contracts/2010/10" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;&lt;a:DomainTableNames&gt;&lt;a:string&gt;Aanduiding_naamgebruik&lt;/a:string&gt;&lt;a:string&gt;Aanslag_type&lt;/a:string&gt;&lt;a:string&gt;Aanvoereenheid_soorten&lt;/a:string&gt;&lt;a:string&gt;Aanvoergebied_soorten&lt;/a:string&gt;&lt;a:string&gt;Aanwezig_afwezig_onbekend&lt;/a:string&gt;&lt;a:string&gt;Academische_titel&lt;/a:string&gt;&lt;a:string&gt;Adellijke_titel_of_predikaat&lt;/a:string&gt;&lt;a:string&gt;Afleveringspunt_soorten&lt;/a:string&gt;&lt;a:string&gt;Afsluitwijzen&lt;/a:string&gt;&lt;a:string&gt;Afvoergebied_soorten&lt;/a:string&gt;&lt;a:string&gt;Afwateringseenheid_soorten&lt;/a:string&gt;&lt;a:string&gt;AtRisktype&lt;/a:string&gt;&lt;a:string&gt;BBP_beheerproduct&lt;/a:string&gt;&lt;a:string&gt;BBP_beleidsproduct&lt;/a:string&gt;&lt;a:string&gt;Bedrijfstakken_WVOW&lt;/a:string&gt;&lt;a:string&gt;Beheersvormen_waterkering&lt;/a:string&gt;&lt;a:string&gt;Belastingsoorten&lt;/a:string&gt;&lt;a:string&gt;Bemalen_of_vrij_verval&lt;/a:string&gt;&lt;a:string&gt;Bemonsteringsapparaat&lt;/a:string&gt;&lt;a:string&gt;Bemonsteringsmethode&lt;/a:string&gt;&lt;a:string&gt;Bemonsteringssoort&lt;/a:string&gt;&lt;a:string&gt;Beoordeling_schade&lt;/a:string&gt;&lt;a:string&gt;BeschermdGebiedtype&lt;/a:string&gt;&lt;a:string&gt;Bestemmingen_afvalwater&lt;/a:string&gt;&lt;a:string&gt;Besturingswijze&lt;/a:string&gt;&lt;a:string&gt;Bevaarbaarheidsklassen&lt;/a:string&gt;&lt;a:string&gt;BevoegdGezagSoort&lt;/a:string&gt;&lt;a:string&gt;Beweegbare_bruggen&lt;/a:string&gt;&lt;a:string&gt;Biotaxon&lt;/a:string&gt;&lt;a:string&gt;Boomhoogte&lt;/a:string&gt;&lt;a:string&gt;Brander&lt;/a:string&gt;&lt;a:string&gt;CEFILT&lt;/a:string&gt;&lt;a:string&gt;ClassificatieCIW&lt;/a:string&gt;&lt;a:string&gt;ClassificatieKRWGW&lt;/a:string&gt;&lt;a:string&gt;ClassificatieKRWbiologischOW&lt;/a:string&gt;&lt;a:string&gt;ClassificatieKRWchemischOW&lt;/a:string&gt;&lt;a:string&gt;Code_stroomrichting&lt;/a:string&gt;&lt;a:string&gt;Code_sturing&lt;/a:string&gt;&lt;a:string&gt;Compartiment&lt;/a:string&gt;&lt;a:string&gt;Correspondentie_soorten&lt;/a:string&gt;&lt;a:string&gt;Detailonderdeel_bijzondere_weglaag&lt;/a:string&gt;&lt;a:string&gt;Detailplaats_lijnmarkering&lt;/a:string&gt;&lt;a:string&gt;DoelMeetLocatieType&lt;/a:string&gt;&lt;a:string&gt;Doelen_baggerwerkzaamheden&lt;/a:string&gt;&lt;a:string&gt;Doelen_voor_metingen&lt;/a:string&gt;&lt;a:string&gt;Doorspoelbaarheid&lt;/a:string&gt;&lt;a:string&gt;Drainerende_werking&lt;/a:string&gt;&lt;a:string&gt;Druk&lt;/a:string&gt;&lt;a:string&gt;Drukklassen&lt;/a:string&gt;&lt;a:string&gt;EBEOkarakteristiek&lt;/a:string&gt;&lt;a:string&gt;EUfonds&lt;/a:string&gt;&lt;a:string&gt;Ecologische_verbindingszone_soort&lt;/a:string&gt;&lt;a:string&gt;Eenheden_voor_precario&lt;/a:string&gt;&lt;a:string&gt;Eenheid&lt;/a:string&gt;&lt;a:string&gt;Effecttype&lt;/a:string&gt;&lt;a:string&gt;Eindbeeld_boomvakdeel&lt;/a:string&gt;&lt;a:string&gt;Eindbestemmingen_baggerspecie&lt;/a:string&gt;&lt;a:string&gt;EmissieBrontype&lt;/a:string&gt;&lt;a:string&gt;Energielevering_soorten&lt;/a:string&gt;&lt;a:string&gt;FunctieKunstwerk&lt;/a:string&gt;&lt;a:string&gt;Functies_van_adressen&lt;/a:string&gt;&lt;a:string&gt;Functies_vastgoedelementen_en_gebieden&lt;/a:string&gt;&lt;a:string&gt;Gebouwd_onbebouwd&lt;/a:string&gt;&lt;a:string&gt;Gebruikscodes_objecten&lt;/a:string&gt;&lt;a:string&gt;Geografische_schalen&lt;/a:string&gt;&lt;a:string&gt;Graderingen_filterlaag&lt;/a:string&gt;&lt;a:string&gt;Gras_beheervorm&lt;/a:string&gt;&lt;a:string&gt;Gras_soorten&lt;/a:string&gt;&lt;a:string&gt;Groenbeheerniveau&lt;/a:string&gt;&lt;a:string&gt;Groentype&lt;/a:string&gt;&lt;a:string&gt;Grondmechanische_aspect_soorten&lt;/a:string&gt;&lt;a:string&gt;Grondslagen&lt;/a:string&gt;&lt;a:string&gt;Grootheid_dummy&lt;/a:string&gt;&lt;a:string&gt;Heffingsobject_soorten&lt;/a:string&gt;&lt;a:string&gt;Hoedanigheid&lt;/a:string&gt;&lt;a:string&gt;IWSRindicator&lt;/a:string&gt;&lt;a:string&gt;Inrichtingtype&lt;/a:string&gt;&lt;a:string&gt;J_N_of_onbekend&lt;/a:string&gt;&lt;a:string&gt;J_of_N&lt;/a:string&gt;&lt;a:string&gt;KRWKwaliteitselement&lt;/a:string&gt;&lt;a:string&gt;KRWMaatregelGebiedsniveau&lt;/a:string&gt;&lt;a:string&gt;KRWMaatregeltype&lt;/a:string&gt;&lt;a:string&gt;KRWMeetLocatietype&lt;/a:string&gt;&lt;a:string&gt;KRWStatus&lt;/a:string&gt;&lt;a:string&gt;KRWStroomgebiedsdistrict&lt;/a:string&gt;&lt;a:string&gt;KRWWatertype&lt;/a:string&gt;&lt;a:string&gt;KRWhydromorfologische_parameter&lt;/a:string&gt;&lt;a:string&gt;Kabel_en_leiding_soorten&lt;/a:string&gt;&lt;a:string&gt;Koppelstuk_soorten&lt;/a:string&gt;&lt;a:string&gt;Kunstwerktype&lt;/a:string&gt;&lt;a:string&gt;Kwaliteitsoordeel&lt;/a:string&gt;&lt;a:string&gt;L_R_B&lt;/a:string&gt;&lt;a:string&gt;Leidingdeel_soorten&lt;/a:string&gt;&lt;a:string&gt;LocatietypeWaardeBepaling&lt;/a:string&gt;&lt;a:string&gt;Lozingsvoorziening_soorten&lt;/a:string&gt;&lt;a:string&gt;Materialen_voor_afvalwatertransportwerken&lt;/a:string&gt;&lt;a:string&gt;Materialen_voor_bekleding_waterkering_of_profiel&lt;/a:string&gt;&lt;a:string&gt;Materialen_voor_kunstwerken&lt;/a:string&gt;&lt;a:string&gt;Materialen_voor_leidingen&lt;/a:string&gt;&lt;a:string&gt;Materialen_voor_profielverdedigingen&lt;/a:string&gt;&lt;a:string&gt;Meetapparaat&lt;/a:string&gt;&lt;a:string&gt;Meetinstantie&lt;/a:string&gt;&lt;a:string&gt;Meting&lt;/a:string&gt;&lt;a:string&gt;Monsterbewerkingsmethode&lt;/a:string&gt;&lt;a:string&gt;Normgroep&lt;/a:string&gt;&lt;a:string&gt;Normkader&lt;/a:string&gt;&lt;a:string&gt;NoseCodetype&lt;/a:string&gt;&lt;a:string&gt;Onderzoekssoort&lt;/a:string&gt;&lt;a:string&gt;Onttrekkingsvoorziening_soorten&lt;/a:string&gt;&lt;a:string&gt;Onttrekkingtype&lt;/a:string&gt;&lt;a:string&gt;Opmerking_weglaag&lt;/a:string&gt;&lt;a:string&gt;OppervlakteCategorieStoomgebiedtype&lt;/a:string&gt;&lt;a:string&gt;Orgaan&lt;/a:string&gt;&lt;a:string&gt;Overige_vastgoedelement_soorten&lt;/a:string&gt;&lt;a:string&gt;Parameter&lt;/a:string&gt;&lt;a:string&gt;Plaatsbepalingsapparaat&lt;/a:string&gt;&lt;a:string&gt;Processen_RWZI&lt;/a:string&gt;&lt;a:string&gt;Processen_SVI&lt;/a:string&gt;&lt;a:string&gt;Processen_transportstelsel&lt;/a:string&gt;&lt;a:string&gt;Profiellijn_soorten&lt;/a:string&gt;&lt;a:string&gt;RWZI_soorten&lt;/a:string&gt;&lt;a:string&gt;Rechtsvormen_bedrijf&lt;/a:string&gt;&lt;a:string&gt;RedenGebruikLocatie&lt;/a:string&gt;&lt;a:string&gt;RichtlijnType&lt;/a:string&gt;&lt;a:string&gt;Rioleringselementen&lt;/a:string&gt;&lt;a:string&gt;Rioolstelsel_soorten&lt;/a:string&gt;&lt;a:string&gt;SGBPTitel&lt;/a:string&gt;&lt;a:string&gt;Scheepvaartteken&lt;/a:string&gt;&lt;a:string&gt;Soort_zorgplicht_voor_bomen&lt;/a:string&gt;&lt;a:string&gt;Staat&lt;/a:string&gt;&lt;a:string&gt;Stuw_soorten&lt;/a:string&gt;&lt;a:string&gt;Subject_rollen&lt;/a:string&gt;&lt;a:string&gt;Substraattype&lt;/a:string&gt;&lt;a:string&gt;TijdDimensietype&lt;/a:string&gt;&lt;a:string&gt;Tijdelijke_kroon&lt;/a:string&gt;&lt;a:string&gt;Vaarweg_soorten&lt;/a:string&gt;&lt;a:string&gt;Veer_typen&lt;/a:string&gt;&lt;a:string&gt;Verkeersvoorziening_boomvakdeel&lt;/a:string&gt;&lt;a:string&gt;Vormen&lt;/a:string&gt;&lt;a:string&gt;Waardebepalingsmethode&lt;/a:string&gt;&lt;a:string&gt;Waardebepalingstechniek&lt;/a:string&gt;&lt;a:string&gt;Waardebewerkingsmethode&lt;/a:string&gt;&lt;a:string&gt;Waarnemingssoort&lt;/a:string&gt;&lt;a:string&gt;WaterTypeKwantitatief&lt;/a:string&gt;&lt;a:string&gt;Waterbeheerder&lt;/a:string&gt;&lt;a:string&gt;Waterbeheergebiedtype&lt;/a:string&gt;&lt;a:string&gt;Waterkeringtype&lt;/a:string&gt;&lt;a:string&gt;Waterrijkheidtype&lt;/a:string&gt;&lt;a:string&gt;Waterstaatkundigezonering&lt;/a:string&gt;&lt;a:string&gt;WatertypeKwalitatief&lt;/a:string&gt;&lt;a:string&gt;WegAardtype&lt;/a:string&gt;&lt;a:string&gt;WetVerordeningtype&lt;/a:string&gt;&lt;a:string&gt;Zuivering_soorten&lt;/a:string&gt;&lt;a:string&gt;ZwemplekVoorzieningen&lt;/a:string&gt;&lt;/a:DomainTableNames&gt;&lt;/GetDomainTableNamesResult&gt;&lt;/GetDomainTableNamesResponse&gt;&lt;/s:Body&gt;&lt;/s:Envelope&gt;
  
  --uuid:1d4b4778-364c-4743-8eb3-d72a1e3f7747+id=28--
  </code></pre>
  
  <p>I figured out this is the string returned and being parsed. In suds you can inject a message to test your responses:</p>
  
  <pre><code>response = \
  """&lt;enter message here&gt;""""
  
  result = client.service['basic'].GetDomainTableNames(__inject={'reply':response})
  </code></pre>
  
  <p>So I threw in the XML string without the uuid and Content headers and it parsed just fine. However I tried to mess around with the uuid like removing the +id from it and it will not parse. Here is where I get lost. I do not think I have an encoding problem. I assume the parsing error is cause by the headers of the xml file.</p>
  
  <p>I assume these headers are normal when I request the raw xml?</p>
  
  <p>Does it fail on the + symbol in that uuid? And if so why?</p>
  
  <p>How DO I get it parsed using suds? Or should I try another library?</p>
  
  <p>Thanks!</p>