Usuário com melhor resposta
Como consumir webService via HTTP com login e Senha ?

Pergunta
-
Preciso invocar/consumir o método listarProdutos conforme mostra o WSDL abaixo:
Abaixo mostra o método listarProdutos ao qual devo consumir (não há parâmetros de entrada)
E aqui a forma de autenticação:
Não tenho grande experiência com webservice e até o momento sei consumir webservice sem informar login ou senha, adicionando a referência ao projeto e consumindo os dados conforme esses exemplos aqui:
ASP. NET 2008 - Criando Web Services II
VB. NET - Consumindo Web Services com Windows Forms
Criando e consumindo um web service
Tentei fazer isso: Consumir Web Service com Login e Senha
Mas sem sucesso, preciso de um exemplo de como invocar/consumir o método listarProdutos desse WebService estou pesquisando porém é um assunto vasto e meu prazo já está se esgotando.
quinta-feira, 6 de julho de 2017 11:00
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.
- Sugerido como Resposta Juliano Nunes Silva Oliveira terça-feira, 11 de julho de 2017 14:17
- Marcado como Resposta welington jrModerator sexta-feira, 28 de julho de 2017 11:00
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.
- Sugerido como Resposta Juliano Nunes Silva Oliveira terça-feira, 11 de julho de 2017 14:17
- Marcado como Resposta welington jrModerator sexta-feira, 28 de julho de 2017 11:00
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)
- Editado SuperDriEmail quinta-feira, 13 de julho de 2017 13:52
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
-
Sugiro que registre uma pergunta específica para seu problema.
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.- Editado Adriano Ricardo Chaves segunda-feira, 9 de outubro de 2017 14:12
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
-