none
Consumir WebService??? RRS feed

  • Pergunta

  • Bom Dia!

    Galera tenho que consumir uma web service  mais o pessoa me mandou o seguinte link?

    https://webmail.nomedosite.com.br:8081/service/adm/soap

    Tentei fazer o teste utilizando o programa soapUI, mais sempre da erro pq, geralmente quando eu faço o teste no soapUI eu coloco no final da url?wsdl.

    Minha pergunta é?

    Como que eu faço para ter acesso aos métodos desta web service só com essa url q eles me passaram?

    Se eu coloco essa url no browser aparece a seguinte msg de erro:

    HTTP ERROR 405

    Problem accessing /service/adm/soap. Reason:

        HTTP method GET is not supported by this URL


    <small>Powered by Jetty://</small>

    Alguém pode me ajudar?

    Fiquem com Deus!


    Posso não concordar com o que vc disse, mas lutarei até a morte pelo seu direito de dizer...

    terça-feira, 6 de maio de 2014 14:45

Respostas

  • Bom dia Rodrigo,

    vai uns tutoriais:

    http://www.caelum.com.br/apostila-java-testes-jsf-web-services-design-patterns/acessando-um-web-service/#6-4-exercicios-nosso-cliente-web-service

    http://testonauta.blogspot.com.br/2011/03/testando-webservices-utilizando-soapui.html

    Não esqueça de avisar caso consiga, para ajudar futuros usuários ok?

    Abraço


    terça-feira, 6 de maio de 2014 14:56
  • Rodrigo um webservice ele tem "serviços" que são exibidos indiferente da plataforma, mais para que o webservice seja consumido tem que ter uma documentação para explicar qual ou quais serviços estão no webservice e quais parametros para cada serviço e qual o tipo de retorno.


    Junior

    • Sugerido como Resposta Giovani Cr terça-feira, 6 de maio de 2014 19:30
    • Marcado como Resposta rodrigo.apostolo quarta-feira, 7 de maio de 2014 15:52
    terça-feira, 6 de maio de 2014 17:01

Todas as Respostas

  • Bom dia Rodrigo,

    vai uns tutoriais:

    http://www.caelum.com.br/apostila-java-testes-jsf-web-services-design-patterns/acessando-um-web-service/#6-4-exercicios-nosso-cliente-web-service

    http://testonauta.blogspot.com.br/2011/03/testando-webservices-utilizando-soapui.html

    Não esqueça de avisar caso consiga, para ajudar futuros usuários ok?

    Abraço


    terça-feira, 6 de maio de 2014 14:56
  •  

    Estou precisando de algo semelhante a esse mais chamando o método ChangePassword e com c# ou vb.net.

    Tenho essa documentação:

    http://files.zimbra.com/docs/soap_api/8.0.2/soapapi-zimbra-doc/api-reference/index.html

    public SOAPMessage authenticateById(String urlStr, String id, String password) throws SOAPException, IOException {
            MessageFactory mf = MessageFactory.newInstance();
            SOAPMessage sm = mf.createMessage();
            SOAPHeader sh = sm.getSOAPHeader();
            SOAPBody sb = sm.getSOAPBody();
            
            /* Build soap header */
            QName headerName = new QName("urn:zimbra", "context");
            SOAPHeaderElement headerElement = sh.addHeaderElement(headerName);
            QName noSessionQName = new QName("nosession");
            headerElement.addChildElement(noSessionQName);
    
            /* Build soap body */
            QName serviceName = new QName("urn:zimbraAccount", "AuthRequest");
            SOAPBodyElement bodyElement = sb.addBodyElement(serviceName);
            QName nameQn = new QName("account");
            SOAPElement nameElementValue = bodyElement.addChildElement(nameQn);
            nameElementValue.addAttribute(new QName("by"), "name");
            nameElementValue.addTextNode(id);
            QName passwordQn = new QName("password");
            SOAPElement passwordElementValue = bodyElement.addChildElement(passwordQn);
            passwordElementValue.addTextNode(password);
    
            sm.writeTo(System.out);
    
            URL url = new URL(urlStr);
            Service service = Service.create(url, serviceName);
    
            Dispatch<SOAPMessage> dispatch = service.createDispatch(serviceName, SOAPMessage.class, Service.Mode.MESSAGE);
            SOAPMessage request = MessageFactory.newInstance().createMessage(null, new FileInputStream("result.xml"));
            SOAPMessage response = dispatch.invoke(request);
            response.writeTo(System.out);
            return sm;
        }

    Me desculpa mais essa forma de trabalhar com Web Service eu nunca trabalhei!

    Fiquem com Deus!


    Posso não concordar com o que vc disse, mas lutarei até a morte pelo seu direito de dizer...

    terça-feira, 6 de maio de 2014 15:35
  • Rodrigo um webservice ele tem "serviços" que são exibidos indiferente da plataforma, mais para que o webservice seja consumido tem que ter uma documentação para explicar qual ou quais serviços estão no webservice e quais parametros para cada serviço e qual o tipo de retorno.


    Junior

    • Sugerido como Resposta Giovani Cr terça-feira, 6 de maio de 2014 19:30
    • Marcado como Resposta rodrigo.apostolo quarta-feira, 7 de maio de 2014 15:52
    terça-feira, 6 de maio de 2014 17:01
  • Galera alguém poderia me informar como que eu faço para converte esse código em python para vb.net ou c#

    import requests, sys
     
    # XML para obter o token para realizar as chamadas na API
    get_token = '<?xml version="1.0" ?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"><format type="xml"/></context></soap:Header><soap:Body><AuthRequest xmlns="urn:zimbraAdmin"><account by="name">admin@domain.tld</account><password>adminpassword</password></AuthRequest></soap:Body></soap:Envelope>'
     
    # Header da requisicao
    req_headers = { 'Content-Type': 'application/soap+xml' }
     
    server = 'https://yourserver:7071/service/admin/soap'
    # server: endereco da requisicao; data: dados do corp da requisicao "body content"; header: os headers da requisicao; verify: desabilita checagem de certificados, https urls
    r = requests.post(server, data=get_token, headers=req_headers, verify=False)
     
    try:
      #Conteudo esperado:
      #<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"/></soap:Header><soap:Body><AuthResponse xmlns="urn:zimbraAdmin"><authToken>0_3d8e53caf7bf4bcd5db3211172092121f902e034_69643d33363a61336534366136362d373665352d343639342d626336342d6438353233316462356663363b6578703d31333a313339393531373237333635313b646c6761646d696e3d313a313b76763d313a303b747970653d363a7a676d6272613b</authToken><lifetime>43200000</lifetime></AuthResponse></soap:Body></soap:Envelope>
      token = r.content.split('authToken>')[1].split('<')[0]
    except Exception:
      print r.content
      sys.exit(1)
     
    change_password_xml = '<?xml version="1.0" ?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"><format type="xml"/><authToken>%s</authToken></context></soap:Header><soap:Body><ChangePasswordRequest xmlns="urn:zimbraAccount"><account by="name">myaccount@domain.tld</account><oldPassword>myaccount_old_password</oldPassword><password>myaccount_new_password</password></ChangePasswordRequest></soap:Body></soap:Envelope>' % token
     
    r = requests.post(server, data=change_password_xml, headers=req_headers, verify=False)
    # Conteudo esperado ( senha alterada com sucesso ):
    #<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"/></soap:Header><soap:Body><AuthResponse xmlns="urn:zimbraAdmin"><authToken>0_bb07cf0d0cdb6472887955b7d09351dcb8c82475_69643d33363a61336534366136362d373665352d343639342d626336342d6438353233316462356663363b6578703d31333a313339393531363530363830333b646c6761646d696e3d313a313b76763d313a303b747970653d363a7a696d6272615b</authToken><lifetime>43200000</lifetime></AuthResponse></soap:Body></soap:Envelope>
    print r.content

    Preciso fazer essa Requisição!

    Obrigado!


    Posso não concordar com o que vc disse, mas lutarei até a morte pelo seu direito de dizer...

    quarta-feira, 7 de maio de 2014 15:51
  • Olá sou novo em automação e estou encontrando a seguinte barreira, estou utilizando a ferramenta SoapUi e ao informar o caminho do serviço apenas 3 métodos retornam o arquivo "Request", preciso informar em algum lugar um usuário e senha para ter acesso aos métodos do serviço?
    sexta-feira, 17 de fevereiro de 2017 11:50