locked
Como consumir webService via HTTP com login e Senha ? RRS feed

Respostas

  • Clique no link "Check the Response property...." da mensagem de erro para obter mais detalhes sobre a causa do erro 500.

    Outra coisa, não vi na imagem da documentação mencionando que o método deve ser POST, portanto faça um teste alterando para GET.


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 11 de julho de 2017 12:12

Todas as Respostas

  • Como está seu código?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 6 de julho de 2017 15:27
  • Meu código está assim:

     [HttpPost]
            public ActionResult Index(string url, string login_senha)
            {
                var _url = @"https://treina.spc.org.br/spc/remoting/ws/consulta/consultaWebService";
                var _HttpPost = HttpPost(_url, login_senha);
                return View();
            }
    
            public static string HttpPost(string url, string login_senha)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Headers["authorization"] = " Basic: " + login_senha;
                request.Method = "POST"; 
                request.ContentType = "text/xml; charset=utf-8"; 
                var response = (HttpWebResponse)request.GetResponse();
                var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                return responseString;
            }

    quinta-feira, 6 de julho de 2017 17:15
  • login_senha foi gerado em base64 como informado na documentação?

    Qual foi o retorno em responseString?


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 7 de julho de 2017 10:41
  • Sim foi gerado e o erro de retorno era "Erro de autenticação"

    Juliano Nunes vou aguardar ativar o usuário (pois ele bloqueado) e fazer novamente os testes e garantir a autenticidade.

    Um outro profissional conseguiu acessar via SoapUI mas quando fui fazer meu teste novamente o usuário já estava bloqueado.

    att.

    sexta-feira, 7 de julho de 2017 17:53
  • Sim foi gerado e o erro de retorno era "Erro de autenticação"

    Juliano Nunes vou aguardar ativar o usuário (pois ele bloqueado) e fazer novamente os testes e garantir a autenticidade.

    Um outro profissional conseguiu acessar via SoapUI mas quando fui fazer meu teste novamente o usuário já estava bloqueado.

    att.

    Senha gerada em base64 e funciona corretamente quando chamado via SoapUI, porém quando faço a chamada via code c# ocorre esse erro abaixo:

    segunda-feira, 10 de julho de 2017 16:26
  • Aparentemente seu erro é um espaço em branco e os dois pontos que você incluiu ao digitar "Basic:".

    Tente assim:

    request.Headers.Add("Authorization", "Basic " + login_senha);


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 10 de julho de 2017 20:01
  • Bom dia Juliano Nunes!

    Agora o erro apresentado é o Erro 500:

    terça-feira, 11 de julho de 2017 10:35
  • Clique no link "Check the Response property...." da mensagem de erro para obter mais detalhes sobre a causa do erro 500.

    Outra coisa, não vi na imagem da documentação mencionando que o método deve ser POST, portanto faça um teste alterando para GET.


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 11 de julho de 2017 12:12
  • Parabéns e Obrigado Juliano alterei o método para GET e funcionou. O retorno foi esse simples HTML abaixo:

    Porém fiquei com outra dúvida: Como eu pego o retorno do xml para exibir na tela do usuário ?

    Explico: dentro desse wsdl tem a lista de operações, exemplo listarProdutos eu imaginava que no retorno desse xml ia conter a lista de Operações e os dados do Produto.

     

    terça-feira, 11 de julho de 2017 12:45
  • Ola a todos

    Estou tentando consumir justamente esse webservice da SPC, só consigo listar os produtos e detalhar eles, mas ao consultar um cnpj/cpf só recebo um erro CN_GER001.E  do serviço .

    Fiz a referencia pelo visual studio e estou usando o codigo.o Objeto spc.treinamento.migrada foi o nome que dei pra referencia que foi criada no vb.

    Obrigado pela ajuda.

               

     Dim Filtro As New spc.treinamento.migrada.FiltroConsulta
    
                Dim M As New spc.treinamento.migrada.consultaWebService
                Dim C As New Net.NetworkCredential(Usuario.Nome, Usuario.Senha)
    
                Filtro.codigoproduto = CInt(Codigo)
                Filtro.documentoconsumidor = CNPJ_CPF
                Filtro.tipoconsumidor = spc.treinamento.migrada.TipoPessoa.F
    
                M.Credentials = C
    
                Dim R = M.consultar(Filtro) '(AQUI ACONTECE O ERRO)


    quinta-feira, 13 de julho de 2017 13:49
  • Olá SuperDriEmail! Esse erro é erro interno do servidor. Estou usando o SoapUI para testar a chamada e acontece o mesmo erro e acredito que seja devido a ser uma área de treinamento com dados limitados e instável.
    quinta-feira, 13 de julho de 2017 15:00
  • SuperDriEmail,

    Sugiro que registre uma pergunta específica para seu problema.

    AJCOR,

    Lembre-se de marcar minha resposta como aceita para que a thread seja marcada como resolvida.


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 13 de julho de 2017 15:40
  • Opa blz?

    Você conseguiu fazer o VS conectar?

    Sou novo na area de .net, teria como enviar o exemplo que vc fez? Estou apanhando pacas.

    sexta-feira, 14 de julho de 2017 20:49
  • Bom dia! Blz Danilo Teles eu consigo conectar mas não consigo consumir, veja essa outra tread que faz a conexão:Como exibir dados de uma consulta webservice na tela e caso tenha algum avanço de um feedback.

    terça-feira, 18 de julho de 2017 13:19
  • Opa, AJCOR blz

    Consegui conectar no webservice, agora estou com mesmo problema que você, não consigo acessar os metodos, (ListarProdutos, CPF entre outros), o suporte deles é péssimo, não ajudam em nada.

    Se conseguir posta ae...

    segunda-feira, 7 de agosto de 2017 21:00
  • Consegui acessar a consulta dos dados dessa forma.

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Add("Authorization", "Basic " + login_senha);
            request.Method = "POST";
            request.ContentType = "text/xml; charset=UTF-8";

            XmlDocument soapEnvelopeXml = new XmlDocument();
            soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
            <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:web=""http://webservice.consulta.spcjava.spcbrasil.org/"">
                <soapenv:Header/>
                  <soapenv:Body>
                    <web:filtro>
                      <codigo-produto>7</codigo-produto>
                      <tipo-consumidor>F</tipo-consumidor>
                      <documento-consumidor>00000000000</documento-consumidor>             
                    </web:filtro>
                  </soapenv:Body>
                </soapenv:Envelope>");
            using (Stream stream = request.GetRequestStream())
            {
                soapEnvelopeXml.Save(stream);
            }
            using (WebResponse response = request.GetResponse())
            {

                using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                {
                    string soapResult = rd.ReadToEnd();              
                    Console.WriteLine(soapResult);
                }
            }

    Agora tenho que trabalhar o retorno deles, o XML, ai estou apanhando

    Detalhe, tem que ser POST o GET nao funciona

    quarta-feira, 9 de agosto de 2017 18:58
  • so conseguiram fazer dessa forma???

    por que assim vai ter que montar o retorno do objeto em classe pra facilitar e o retorno eh gigante.

    Engraçado que se adicionarmos a referencia web e utitilizar pelos metodos da erro... fiz assim e so da certo a parte de listar produtos e detalhes

     consultaWebService consulta = new consultaWebService();

      System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); 
                credentialCache.Add(
                    new System.Uri(consulta.Url),
                    "Basic",
                    new System.Net.NetworkCredential("usuario", "senha")
                );

                consulta.Credentials = credentialCache;

      var lista = consulta.listarProdutos(); //ate aqui ok

    FiltroConsulta filtro = new FiltroConsulta();
                
                           
                //para spc maxi
                filtro.codigoproduto = "325";
                filtro.documentoconsumidor = "12670439705";
                filtro.tipoconsumidor = TipoPessoa.F;

              

              var result =  consulta.consultar(filtro); // aqui da erro (e eh forma gerada ao add reference service)

    quarta-feira, 4 de outubro de 2017 22:30
  • Pessoal,

    Lendo o que vocês relataram, percebi que estou com os mesmos problemas que vocês passaram.

    Não tenho experiência nenhuma com WebService, essa é minha primeira tentativa e estou apanhando bastante para o obter respostas do WEbService.

    Apesar de aqui ter algumas respostas, não consegui entender o suficiente para ter uma solução para o problema. Vocês poderiam fazer a gentileza de dar uma resposta mais completa sobre como usar o WebService do SpcBrasil. Só preciso ao menos conseguir fazer a conexão. 

    Para facilitar, passarei o que fiz até agora:

    Adicionei uma Referência de Serviço do https://treina.spc.org.br:443/spc/remoting/ws/consulta/consultaWebService?wsdl

    Criei um form com TextBox para digitar o CPF e um botão para consumir o serviço (claro que mal cheguei em uma consulta básica como listar o produto)

            private void btnConsultar_Click(object sender, EventArgs e)
            {

                var wsSerasa = new wsSPCSerasa.consultaWebServiceClient();
                wsSerasa.ClientCredentials.UserName.UserName = "388315"; //(Fictício)
                wsSerasa.ClientCredentials.UserName.Password = "26062016"

                var consulta = wsSerasa.listarProdutos();

            }

    A exceção retornada é essa:

    $exception  { "A solicitação HTTP não está autorizada no esquema de autenticação de cliente 'Anonymous'. O cabeçalho de autenticação recebido do servidor foi 'Basic realm=\"Web Services - SPC Brasil\"'."}

    Acredito que estou falhando em fornecer mais informações para o WebService, mas não tenho noção do que mais posso enviar.

    Agradeço a colaboração e atenção de vocês


    Muito agradecido.


    segunda-feira, 9 de outubro de 2017 13:54
  • Olá adriano, muda esse metodo para a essa forma que vai conseguir se autenticar e pelo menos listar produtos


    private void btnConsultar_Click(object sender, EventArgs e)
            {
                var wsSerasa = new wsSPCSerasa.consultaWebService();

    System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); 

                credentialCache.Add(
                    new System.Uri(consulta.Url),
                    "Basic",
                    new System.Net.NetworkCredential("usuario", "senha")
                );

                wsSerasa .Credentials = credentialCache;

      var lista = wsSerasa .listarProdutos(); //ate aqui ok


            }


    • Editado celinolimac segunda-feira, 9 de outubro de 2017 15:43
    segunda-feira, 9 de outubro de 2017 15:41
  • Olá Celinolimac, eu até tentei, mas não tem a instância wsSPCSerasa.consultaWebService, tem apenbas a wsSPCSerasa.consultaWebServiceClient()

    E também não tem o método wsSerasa.Credentials

    Mais alguma dica?

    Grato.

    segunda-feira, 9 de outubro de 2017 16:46
  • Quem estiver com dificuldades em usar o WebService do SPCBrasil, eu segui ipsis litteris o que é explicado nesse link:

    http://wiki.servicenow.com/index.php?title=Web_Services_C_Sharp_.NET_End_to_End_Tutorial#gsc.tab=0

    Usando a parte 1.2.2 Using a Web Reference

    E o obtive o resultado esperado.

    Espero ajudar todos que necessitam desse serviço.

    Abraços.

    • Sugerido como Resposta Alexander Volta sábado, 10 de agosto de 2019 13:23
    terça-feira, 10 de outubro de 2017 14:06
  • Conseguiu Danilo?
    quarta-feira, 13 de dezembro de 2017 14:50
  • COnseguiu?
    quarta-feira, 13 de dezembro de 2017 14:54
  • Adriano Ricardo Chave, obrigado por compartilhar sua solução! Foi a que resolveu para mim também.

    sábado, 10 de agosto de 2019 13:23