mvantellingen / python-zeep

A Python SOAP client
http://docs.python-zeep.org
Other
1.88k stars 578 forks source link

XMLSyntaxError: Opening and ending tag mismatch #1299

Closed 3a532028 closed 2 years ago

3a532028 commented 2 years ago

I am very new in SOAP or zeep.

I just want to make a simple request like following programe. which method is no needed any parameters:

import zeep
from zeep import Client
my_url = 'http://****.asmx'
client = Client(f'{my_url}?wsdl')
client.service.Version()

But it always goes throw:

TransportError: Server returned response (404) with invalid XML: Invalid XML content received (Opening and ending tag mismatch: link line 11 and head, line 50, column 12).
Content: b'<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Not Found</title>

        <!-- Fonts -->
        <link rel="dns-prefetch" href="//fonts.gstatic.com">
        <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">

        <!-- Styles -->
        <style>
            html, body {
                background-color: #fff;
                color: #636b6f;
                font-family: 'Nunito', sans-serif;
                font-weight: 100;
                height: 100vh;
                margin: 0;
            }

            .full-height {
                height: 100vh;
            }

            .flex-center {
                align-items: center;
                display: flex;
                justify-content: center;
            }

            .position-ref {
                position: relative;
            }

            .code {
                border-right: 2px solid;
                font-size: 26px;
                padding: 0 15px 0 15px;
                text-align: center;
            }

            .message {
                font-size: 18px;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <div class="flex-center position-ref full-height">
            <div class="code">
                404            </div>

            <div class="message" style="padding: 10px;">
                Not Found            </div>
        </div>
    </body>
</html>

It can work fine with python requests code like following:

import requests

url = "http://****.asmx?WSDL"

payload="""
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
    <soap12:Body>
        <Version xmlns="http://microsoft.com/webservices/" />
    </soap12:Body>
</soap12:Envelope>
"""
headers = {
  'Content-Type': 'application/soap+xml; charset=utf-8'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

And my client.wsdl.dump() By zeep method is here:

Prefixes:
     xsd: http://www.w3.org/2001/XMLSchema
     ns0: http://microsoft.com/webservices/

Global elements:
     ns0:APISoapHeader(ns0:APISoapHeader)
     ns0:CheckCaseID(id: xsd:string)
     ns0:CheckCaseIDResponse(CheckCaseIDResult: ns0:CaseProcessStatus)
     ns0:Create(note: ns0:PostNote)
     ns0:CreateDir(data: ns0:BookInsert)
     ns0:CreateDirResponse(CreateDirResult: xsd:boolean)
     ns0:CreateResponse(CreateResult: xsd:boolean)
     ns0:DataInsert(data: ns0:DataInsert)
     ns0:DataInsertNew(data: ns0:DataInsert)
     ns0:DataInsertNewResponse(DataInsertNewResult: xsd:boolean)
     ns0:DataInsertResponse(DataInsertResult: xsd:boolean)
     ns0:DuplicateCheck(plt_no: xsd:string, vil_dt: xsd:string, vil_time: xsd:string)
     ns0:DuplicateCheckResponse(DuplicateCheckResult: ns0:CheckDuplicateData)
     ns0:GetCarData(plt_no: xsd:string)
     ns0:GetCarDataResponse(GetCarDataResult: ns0:CarData)
     ns0:GetNoteReason()
     ns0:GetNoteReasonResponse(GetNoteReasonResult: ns0:ArrayOfNoteReason)
     ns0:Login(username: xsd:string, password: xsd:string, version: xsd:string)
     ns0:LoginResponse(LoginResult: xsd:string)
     ns0:MpoliceCheck(tkt_no: xsd:string)
     ns0:MpoliceCheckResponse(MpoliceCheckResult: ns0:MpoliceData)
     ns0:PapperDataInsert(data: ns0:PapperInsert)
     ns0:PapperDataInsertResponse(PapperDataInsertResult: xsd:boolean)
     ns0:Version()
     ns0:VersionResponse(VersionResult: xsd:string)
     ns0:mpoliceCreateDir(data: ns0:mpoliceBookInsert)
     ns0:mpoliceCreateDirResponse(mpoliceCreateDirResult: xsd:boolean)

Global types:
     xsd:anyType
     ns0:APISoapHeader(signature: xsd:string, timestamp: xsd:long, nonce: xsd:string, _attr_1: {})
     ns0:ArrayOfDuplicateData(DuplicateData: ns0:DuplicateData[])
     ns0:ArrayOfNoteReason(NoteReason: ns0:NoteReason[])
     ns0:BookInsert(albumnum: xsd:string, totalCnt: xsd:int, keyaccount: xsd:string)
     ns0:CarData(carName: xsd:string, brand: xsd:string, color: xsd:string)
     ns0:CaseProcessStatus
     ns0:CheckDuplicateData(flag: xsd:boolean, repeatData: ns0:ArrayOfDuplicateData)
     ns0:DataInsert(type: xsd:string, plt_no: xsd:string, carkind: xsd:string, vil_dt: xsd:string, vil_tm: xsd:string, vil_addr: xsd:string, rule1_sp1: xsd:string, rule1_sp2: xsd:string, rule1: xsd:string, truth1: xsd:string, accuse_no: xsd:string, pname: xsd:string, p_level: xsd:string, reportdt: xsd:string, reportno: xsd:string, piccnt: xsd:int, picrancode: xsd:string, whitenum: xsd:string, keyaccount: xsd:string, albumnum: xsd:string, get: xsd:string)
     ns0:DuplicateData(bookno: xsd:string, plt_no: xsd:string, car_kind: xsd:string, vil_dt: xsd:string, vil_time: xsd:string, rule1: xsd:string, truth1: xsd:string, vil_addr: xsd:string, pname: xsd:string, status: xsd:string, in_date: xsd:string, police: xsd:string, tkt_no: xsd:string, date: xsd:string, logout: xsd:string, rsn: xsd:string)
     ns0:MpoliceData(plt_no: xsd:string, kind: xsd:string, owner: xsd:string, o_addr: xsd:string, driver: xsd:string, d_id_no: xsd:string, d_birthday: xsd:string, d_addr: xsd:string, vil_dt: xsd:string, vil_time: xsd:string, vil_addr: xsd:string, rule1: xsd:string, truth_1: xsd:string, rule2: xsd:string, truth_2: xsd:string, sprvsn_no1: xsd:string, hold_thing: xsd:string, arv_dt: xsd:string, pname: xsd:string, pname2: xsd:string, hold: xsd:string, insure: xsd:string, modifyTime: xsd:string)
     ns0:NoteReason(Code: xsd:string, Name: xsd:string, IsDelivery: xsd:boolean, IsDeposit: xsd:boolean, IsReturn: xsd:boolean)
     ns0:PapperInsert(mpoliceno: xsd:string, plt_no: xsd:string, tkt_no: xsd:string, vil_dt: xsd:string, vil_time: xsd:string, vil_addr: xsd:string, mpolice_date: xsd:string, arv_dt: xsd:string, accuse_no: xsd:string, accuse_tp: xsd:string, pname: xsd:string, p_level: xsd:string, pname2: xsd:string, p_level2: xsd:string, key_man: xsd:string, key_date: xsd:string, car_kind: xsd:string, aowner: xsd:string, color: xsd:string, rule1: xsd:string, rule2: xsd:string, truth_1: xsd:string, truth_2: xsd:string, rule1_sp1: xsd:string, rule1_sp2: xsd:string, rule2_sp1: xsd:string, rule2_sp2: xsd:string, owner: xsd:string, owner_addr: xsd:string, driver: xsd:string, driver_addr: xsd:string, driver_id: xsd:string, driver_dbirth: xsd:string, hold: xsd:string, sprvsn_no: xsd:string, plt_mark: xsd:string, hold_thing: xsd:string, isrepeat: xsd:string, pno: xsd:string, pictureset: xsd:string, account: xsd:string, insure: xsd:string, get: xsd:string, Red: xsd:string, type: xsd:string)
     ns0:PostNote(Book: xsd:string, Id: xsd:string, Date: xsd:string, Reason: xsd:string, Creator: xsd:string)
     ns0:mpoliceBookInsert(albumnum: xsd:string, totalCnt: xsd:int, keyaccount: xsd:string)
     xsd:ENTITIES
     xsd:ENTITY
     xsd:ID
     xsd:IDREF
     xsd:IDREFS
     xsd:NCName
     xsd:NMTOKEN
     xsd:NMTOKENS
     xsd:NOTATION
     xsd:Name
     xsd:QName
     xsd:anySimpleType
     xsd:anyURI
     xsd:base64Binary
     xsd:boolean
     xsd:byte
     xsd:date
     xsd:dateTime
     xsd:decimal
     xsd:double
     xsd:duration
     xsd:float
     xsd:gDay
     xsd:gMonth
     xsd:gMonthDay
     xsd:gYear
     xsd:gYearMonth
     xsd:hexBinary
     xsd:int
     xsd:integer
     xsd:language
     xsd:long
     xsd:negativeInteger
     xsd:nonNegativeInteger
     xsd:nonPositiveInteger
     xsd:normalizedString
     xsd:positiveInteger
     xsd:short
     xsd:string
     xsd:time
     xsd:token
     xsd:unsignedByte
     xsd:unsignedInt
     xsd:unsignedLong
     xsd:unsignedShort

Bindings:
     Soap11Binding: {http://microsoft.com/webservices/}TaoPoliceApiSoap
     Soap12Binding: {http://microsoft.com/webservices/}TaoPoliceApiSoap12

Service: TaoPoliceApi
     Port: TaoPoliceApiSoap (Soap11Binding: {http://microsoft.com/webservices/}TaoPoliceApiSoap)
         Operations:
            CheckCaseID(id: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> CheckCaseIDResult: ns0:CaseProcessStatus
            Create(note: ns0:PostNote, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> CreateResult: xsd:boolean
            CreateDir(data: ns0:BookInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> CreateDirResult: xsd:boolean
            DataInsert(data: ns0:DataInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> DataInsertResult: xsd:boolean
            DataInsertNew(data: ns0:DataInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> DataInsertNewResult: xsd:boolean
            DuplicateCheck(plt_no: xsd:string, vil_dt: xsd:string, vil_time: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> DuplicateCheckResult: ns0:CheckDuplicateData
            GetCarData(plt_no: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> GetCarDataResult: ns0:CarData
            GetNoteReason(_soapheaders={APISoapHeader: ns0:APISoapHeader}) -> GetNoteReasonResult: ns0:ArrayOfNoteReason
            Login(username: xsd:string, password: xsd:string, version: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> LoginResult: xsd:string
            MpoliceCheck(tkt_no: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> MpoliceCheckResult: ns0:MpoliceData
            PapperDataInsert(data: ns0:PapperInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> PapperDataInsertResult: xsd:boolean
            Version() -> VersionResult: xsd:string
            mpoliceCreateDir(data: ns0:mpoliceBookInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> mpoliceCreateDirResult: xsd:boolean

     Port: TaoPoliceApiSoap12 (Soap12Binding: {http://microsoft.com/webservices/}TaoPoliceApiSoap12)
         Operations:
            CheckCaseID(id: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> CheckCaseIDResult: ns0:CaseProcessStatus
            Create(note: ns0:PostNote, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> CreateResult: xsd:boolean
            CreateDir(data: ns0:BookInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> CreateDirResult: xsd:boolean
            DataInsert(data: ns0:DataInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> DataInsertResult: xsd:boolean
            DataInsertNew(data: ns0:DataInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> DataInsertNewResult: xsd:boolean
            DuplicateCheck(plt_no: xsd:string, vil_dt: xsd:string, vil_time: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> DuplicateCheckResult: ns0:CheckDuplicateData
            GetCarData(plt_no: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> GetCarDataResult: ns0:CarData
            GetNoteReason(_soapheaders={APISoapHeader: ns0:APISoapHeader}) -> GetNoteReasonResult: ns0:ArrayOfNoteReason
            Login(username: xsd:string, password: xsd:string, version: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> LoginResult: xsd:string
            MpoliceCheck(tkt_no: xsd:string, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> MpoliceCheckResult: ns0:MpoliceData
            PapperDataInsert(data: ns0:PapperInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> PapperDataInsertResult: xsd:boolean
            Version() -> VersionResult: xsd:string
            mpoliceCreateDir(data: ns0:mpoliceBookInsert, _soapheaders={APISoapHeader: ns0:APISoapHeader}) -> mpoliceCreateDirResult: xsd:boolean

Sorry for the long paste. But I have no idea how to use zeep to make this work.

shijting commented 9 months ago

Hi, I'm experiencing the same problem right now.