在Python 2.7.5中使用mac和suds == 0.4SUDS使用SOAP服務的文件頭上的SAXParseException - 如何正確使用soap?
我使用suds(第一次)使用wsdl來使用soap web服務。當我請求XML raw時,我對這個響應感到困惑,因爲它無法解析。
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)
這給了我一個錯誤:
SAXParseException: <unknown>:2:43: not well-formed (invalid token)
我設置了客戶端沒有它解析爲Python對象返回XML:
client.set_options(retxml=True)
,我收到了回報,我可以手動解析。不過,我希望「它」能夠正常工作,並且更好地理解問題所在。
返回的XML如下所示,似乎包含一些標頭。我注意到uuid中的+ id在每次請求後都被提出。
--uuid:1d4b4778-364c-4743-8eb3-d72a1e3f7747+id=28
Content-ID: <http://tempuri.org/0>
Content-Transfer-Encoding: 8bit
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetDomainTableNamesResponse xmlns="http://rws.services.nl/DomainTableWS/2010/10"><GetDomainTableNamesResult xmlns:a="http://rws.services.nl/DomainTableWS/Contracts/2010/10" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:DomainTableNames><a:string>Aanduiding_naamgebruik</a:string><a:string>Aanslag_type</a:string><a:string>Aanvoereenheid_soorten</a:string><a:string>Aanvoergebied_soorten</a:string><a:string>Aanwezig_afwezig_onbekend</a:string><a:string>Academische_titel</a:string><a:string>Adellijke_titel_of_predikaat</a:string><a:string>Afleveringspunt_soorten</a:string><a:string>Afsluitwijzen</a:string><a:string>Afvoergebied_soorten</a:string><a:string>Afwateringseenheid_soorten</a:string><a:string>AtRisktype</a:string><a:string>BBP_beheerproduct</a:string><a:string>BBP_beleidsproduct</a:string><a:string>Bedrijfstakken_WVOW</a:string><a:string>Beheersvormen_waterkering</a:string><a:string>Belastingsoorten</a:string><a:string>Bemalen_of_vrij_verval</a:string><a:string>Bemonsteringsapparaat</a:string><a:string>Bemonsteringsmethode</a:string><a:string>Bemonsteringssoort</a:string><a:string>Beoordeling_schade</a:string><a:string>BeschermdGebiedtype</a:string><a:string>Bestemmingen_afvalwater</a:string><a:string>Besturingswijze</a:string><a:string>Bevaarbaarheidsklassen</a:string><a:string>BevoegdGezagSoort</a:string><a:string>Beweegbare_bruggen</a:string><a:string>Biotaxon</a:string><a:string>Boomhoogte</a:string><a:string>Brander</a:string><a:string>CEFILT</a:string><a:string>ClassificatieCIW</a:string><a:string>ClassificatieKRWGW</a:string><a:string>ClassificatieKRWbiologischOW</a:string><a:string>ClassificatieKRWchemischOW</a:string><a:string>Code_stroomrichting</a:string><a:string>Code_sturing</a:string><a:string>Compartiment</a:string><a:string>Correspondentie_soorten</a:string><a:string>Detailonderdeel_bijzondere_weglaag</a:string><a:string>Detailplaats_lijnmarkering</a:string><a:string>DoelMeetLocatieType</a:string><a:string>Doelen_baggerwerkzaamheden</a:string><a:string>Doelen_voor_metingen</a:string><a:string>Doorspoelbaarheid</a:string><a:string>Drainerende_werking</a:string><a:string>Druk</a:string><a:string>Drukklassen</a:string><a:string>EBEOkarakteristiek</a:string><a:string>EUfonds</a:string><a:string>Ecologische_verbindingszone_soort</a:string><a:string>Eenheden_voor_precario</a:string><a:string>Eenheid</a:string><a:string>Effecttype</a:string><a:string>Eindbeeld_boomvakdeel</a:string><a:string>Eindbestemmingen_baggerspecie</a:string><a:string>EmissieBrontype</a:string><a:string>Energielevering_soorten</a:string><a:string>FunctieKunstwerk</a:string><a:string>Functies_van_adressen</a:string><a:string>Functies_vastgoedelementen_en_gebieden</a:string><a:string>Gebouwd_onbebouwd</a:string><a:string>Gebruikscodes_objecten</a:string><a:string>Geografische_schalen</a:string><a:string>Graderingen_filterlaag</a:string><a:string>Gras_beheervorm</a:string><a:string>Gras_soorten</a:string><a:string>Groenbeheerniveau</a:string><a:string>Groentype</a:string><a:string>Grondmechanische_aspect_soorten</a:string><a:string>Grondslagen</a:string><a:string>Grootheid_dummy</a:string><a:string>Heffingsobject_soorten</a:string><a:string>Hoedanigheid</a:string><a:string>IWSRindicator</a:string><a:string>Inrichtingtype</a:string><a:string>J_N_of_onbekend</a:string><a:string>J_of_N</a:string><a:string>KRWKwaliteitselement</a:string><a:string>KRWMaatregelGebiedsniveau</a:string><a:string>KRWMaatregeltype</a:string><a:string>KRWMeetLocatietype</a:string><a:string>KRWStatus</a:string><a:string>KRWStroomgebiedsdistrict</a:string><a:string>KRWWatertype</a:string><a:string>KRWhydromorfologische_parameter</a:string><a:string>Kabel_en_leiding_soorten</a:string><a:string>Koppelstuk_soorten</a:string><a:string>Kunstwerktype</a:string><a:string>Kwaliteitsoordeel</a:string><a:string>L_R_B</a:string><a:string>Leidingdeel_soorten</a:string><a:string>LocatietypeWaardeBepaling</a:string><a:string>Lozingsvoorziening_soorten</a:string><a:string>Materialen_voor_afvalwatertransportwerken</a:string><a:string>Materialen_voor_bekleding_waterkering_of_profiel</a:string><a:string>Materialen_voor_kunstwerken</a:string><a:string>Materialen_voor_leidingen</a:string><a:string>Materialen_voor_profielverdedigingen</a:string><a:string>Meetapparaat</a:string><a:string>Meetinstantie</a:string><a:string>Meting</a:string><a:string>Monsterbewerkingsmethode</a:string><a:string>Normgroep</a:string><a:string>Normkader</a:string><a:string>NoseCodetype</a:string><a:string>Onderzoekssoort</a:string><a:string>Onttrekkingsvoorziening_soorten</a:string><a:string>Onttrekkingtype</a:string><a:string>Opmerking_weglaag</a:string><a:string>OppervlakteCategorieStoomgebiedtype</a:string><a:string>Orgaan</a:string><a:string>Overige_vastgoedelement_soorten</a:string><a:string>Parameter</a:string><a:string>Plaatsbepalingsapparaat</a:string><a:string>Processen_RWZI</a:string><a:string>Processen_SVI</a:string><a:string>Processen_transportstelsel</a:string><a:string>Profiellijn_soorten</a:string><a:string>RWZI_soorten</a:string><a:string>Rechtsvormen_bedrijf</a:string><a:string>RedenGebruikLocatie</a:string><a:string>RichtlijnType</a:string><a:string>Rioleringselementen</a:string><a:string>Rioolstelsel_soorten</a:string><a:string>SGBPTitel</a:string><a:string>Scheepvaartteken</a:string><a:string>Soort_zorgplicht_voor_bomen</a:string><a:string>Staat</a:string><a:string>Stuw_soorten</a:string><a:string>Subject_rollen</a:string><a:string>Substraattype</a:string><a:string>TijdDimensietype</a:string><a:string>Tijdelijke_kroon</a:string><a:string>Vaarweg_soorten</a:string><a:string>Veer_typen</a:string><a:string>Verkeersvoorziening_boomvakdeel</a:string><a:string>Vormen</a:string><a:string>Waardebepalingsmethode</a:string><a:string>Waardebepalingstechniek</a:string><a:string>Waardebewerkingsmethode</a:string><a:string>Waarnemingssoort</a:string><a:string>WaterTypeKwantitatief</a:string><a:string>Waterbeheerder</a:string><a:string>Waterbeheergebiedtype</a:string><a:string>Waterkeringtype</a:string><a:string>Waterrijkheidtype</a:string><a:string>Waterstaatkundigezonering</a:string><a:string>WatertypeKwalitatief</a:string><a:string>WegAardtype</a:string><a:string>WetVerordeningtype</a:string><a:string>Zuivering_soorten</a:string><a:string>ZwemplekVoorzieningen</a:string></a:DomainTableNames></GetDomainTableNamesResult></GetDomainTableNamesResponse></s:Body></s:Envelope>
--uuid:1d4b4778-364c-4743-8eb3-d72a1e3f7747+id=28--
我想通了這是返回並被解析的字符串。在泡你可以注入一個消息來測試你的反應:
response = \
"""<enter message here>""""
result = client.service['basic'].GetDomainTableNames(__inject={'reply':response})
所以我不扔的uuid和內容標題中的XML字符串,並將其解析就好了。然而,我試圖搞亂uuid,就像從中刪除+ id一樣,它不會解析。這是我迷路的地方。我不認爲我有編碼問題。我假設解析錯誤是由xml文件的標題引起的。
我認爲這些標頭是正常的,當我請求原始XML?
它在uuid中的+符號上失敗嗎?如果是的話,爲什麼?
如何使用泡沫來解析它?或者我應該嘗試其他圖書館?
謝謝!
我也用soapui試過了。但是找不到錯誤。但有一個問題,有像'xmlns =「http://rws.services.nl/DomainTableWS/2010/10」'的網址。我不知道是否有必要,但主持人是未知的。 –
我其實也嘗試了soapui這個週末,但沒有更新的問題呢。 soapui沒有錯誤。隨着pysimplesoap錯誤也會發生。 – Klodder