1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[Python] Python: requests de SOAP, como fazer requisicões de um wsdl

Discussão em 'Python' iniciado por Stack, Setembro 14, 2021.

  1. Stack

    Stack Membro Participativo

    Olá, eu tenho um wsdl (https://ws1.bmgconsig.com.br/webservices/SaqueComplementar?wsdl) e preciso fazer requisições, porém não sei como fazer o tratamento dos headers e body com base no wsdl.

    o cabeçalho:

    {'Date': 'Thu, 04 Apr 2019 12:17:42 GMT', 'Content-Type': 'text/xml;charset=utf-8', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'Connection': 'close', 'Transfer-Encoding': 'chunked'}


    meu código:

    url = 'https://ws1.bmgconsig.com.br/webservices/SaqueComplementar?wsdl'
    headers = {'input name': 'buscarLimiteSaqueRequest'}
    params = {informações de login, senha e parâmetros necessários}
    r = requests.post(url, headers=headers, data=params )


    retorna:

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    </p>
    <hr>
    <address>Apache/2.2.15 (Red Hat) Server at slap443.bancobmg.com.br Port 80</address>
    </body></html>


    Não sei se 'headers' está configurado certo. Eu já li toda a documentação do 'requests', porém ela da muitos exemplos em json(), mas esse wsdl não fornece suporte.

    Se eu não coloco 'headers', retorna:

    <soapenv:Body>
    <soapenv:Fault>
    <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
    <faultstring>no SOAPAction header!</faultstring>
    <detail>
    <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">slap443.bancobmg.com.br</ns2:hostname>
    </detail>
    </soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>


    Eu já utilizei o framework zeep e funcionou, porém ele é MUITO lento, creio que usando 'requests' eu consiga uma melhor performance.

    Continue reading...

Compartilhe esta Página