Consumindo um WebService SOAP com C#

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ธ.ค. 2024

ความคิดเห็น • 81

  • @ASouza-ut9kb
    @ASouza-ut9kb 7 ปีที่แล้ว +4

    Muito bom direto ao ponto sem enrolação!

  • @AlissonBeloti
    @AlissonBeloti ปีที่แล้ว +1

    Precisava de um exemplo que implemente credentials.

  • @daviddomingues4847
    @daviddomingues4847 4 ปีที่แล้ว

    Um vídeo de 2015 que me salvou em 2020! Agradeço demais!

  • @alexandrecoelhodasilva113
    @alexandrecoelhodasilva113 5 ปีที่แล้ว +3

    Não é todo dia que vemos um vídeo que vai direto ao ponto, muito bom kkkkkk

  • @darcioas
    @darcioas ปีที่แล้ว +1

    Primeiramente parabéns pelo vídeo!
    Faz uma aula mostrando como utilizar a classe HttpCliente + Await + Async com o uso de certificado digital. Como exemplo o envio dos arquivos XML das notas fiscais. Já procurei em tudo que é canal e não encontrei.

  • @GustavoSantos-pc4iq
    @GustavoSantos-pc4iq 2 ปีที่แล้ว +1

    Cara que massa esse conteúdo!!! Teria como fazer um video explicando como fazer isso em .Net 5.0? valeu

  • @andrewssantos4310
    @andrewssantos4310 3 ปีที่แล้ว

    Estou conseguindo enviar os dados corretamente para o webservice, porém como eu vejo o retorno?

  • @brunobraz100
    @brunobraz100 6 ปีที่แล้ว +1

    Muito bom. Direto ao ponto...

  • @annasantos9150
    @annasantos9150 5 ปีที่แล้ว +1

    Concordo, direto e eficaz

  • @fbifabiobruno
    @fbifabiobruno 5 ปีที่แล้ว

    Muito Bom, Parabéns. Pude observar claramente que o wsPagamento possui os parâmetros NumeroParcelas e Valor sugestivamente dos respectivos tipos int e double. Estou consumindo um servidor de uma empresa de mercado onde os tipos são anuláveis, ou seja, int? e double?. Não sei se é por este motivo mas o fato é sempre que tento consumi-los meus parâmetros de entrada não são reconhecidos e chegam no destino sem os mesmo. Tem alguma dica para se trabalhar com este tipo de parâmetro?

    • @kerplunkboydotNET
      @kerplunkboydotNET  4 ปีที่แล้ว

      Sugiro usar o SoapUI para simular a chamada que está fazendo para seu serviço, assim, ao menos tira a dúvida se é um problema no seu lado ou do server. Se for no server, não tem o que você fazer. Se for do seu lado, aí vai ter que depurar direitinho antes de fazer a chamada e conferir se está tudo ok.

  • @guilhermesoattosantos3315
    @guilhermesoattosantos3315 10 หลายเดือนก่อน

    adorei a intro

  • @vhboechat
    @vhboechat 9 ปีที่แล้ว

    +kerplunkboy Qual a diferença de Adicionar Referencia web na opção sem utilizar o botão Advanced (1':22")?

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 ปีที่แล้ว

      +Victor Hugo Boechat É até meio estranho de explicar, mas vamos lá:
      Tecnicamente funcionaria se eu simplesmente colocasse o endereço do WSDL na primeira tela. Mas a sintaxe do código ficaria um tanto mais complexa. Por isso, preferi adicionar com o modo de compatibilidade(O botão Add Web Reference da segundas tela). Isso gera o código da referência compatível com o framework 2.0 que é uma sintaxe mais simples e intuitiva, o que é um dos objetivos desse tutorial, simplificar. Se eu adicionasse como referência de serviço, eu teria uma sintaxe um pouco mais complexa, onde eu precisaria lidar com corpo de mensagens e seus cabeçalhos. Se quiser, eu poderia fazer um vídeo mostrando como seria isso, mas sinceramente acho um tanto "inútil", já que webservices SOAP estão um tanto quanto ultrapassados e caindo cada vez mais em desuso. Até me espanto que a NFe assim o seja e não uma WebAPI REST.

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 ปีที่แล้ว

      +Victor Hugo Boechat E muito obrigado pela audiência!

  • @daniellucasdepaula4257
    @daniellucasdepaula4257 7 ปีที่แล้ว +1

    Como faço pra consumir com xamarin forms?

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      É a mesma coisa que qualquer outra aplicação. Se tiver alguma dificuldade, talvez esse link possa ajudar: developer.xamarin.com/guides/xamarin-forms/cloud-services/consuming/asmx/

    • @daniellucasdepaula4257
      @daniellucasdepaula4257 7 ปีที่แล้ว

      Com projeto portable não sei como fazer, esse link tambem me deixou meio confuso ;s

  • @AlfaNetEtec
    @AlfaNetEtec 7 ปีที่แล้ว

    Prezado boa tarde excelente explicação mais restou uma duvida ,como faço para obter qualquer dado de uma pagina web ,que não possui um webservice ..

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Nesse caso a coisa pode complicar bastante. Você terá que fazer um parser específico para a página, buscando dados diretamente do texto HTML. O caso é que páginas podem ser dinâmicas e o DOM modificado o tempo todo, então dependendo do que você quer talvez não fique eficiente.

  • @marcioelibio6834
    @marcioelibio6834 8 ปีที่แล้ว

    Segue a forma como estou tentando utilizar o webservice colocando da forma como voce havia indicado, o webservice é executado, pois consigo ver na console do sistema.
    Os parametros enviados não aparecem e ocorre erro
    servico2.g5seniorservices Servico3 = new servico2.g5seniorservices();
    servico2.dbGetDBDateIn parametros2 = new servico2.dbGetDBDateIn();
    servico2.dbGetDBDateOut retorno2 = new servico2.dbGetDBDateOut();
    retorno2 = Servico3.GetDBDate("senior", "senior", 0, new servico2.dbGetDBDateIn() { flowInstanceID = "id", flowName = "nome" });
    Também nao sei se estou pegando o retorno do webservice de forma correta.

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 ปีที่แล้ว

      Me parece ok, não ocorre nada? Nem ao menos um erro?

    • @marcioelibio6834
      @marcioelibio6834 8 ปีที่แล้ว

      Ocorre erro, amanhã mando o erro.

    • @marcioelibio6834
      @marcioelibio6834 8 ปีที่แล้ว

      Bom dia, segue o erro:
      TesteSystem.InvalidCastException: Specified cast is not valid.
      at Phoneword.servico2.g5seniorservices.GetDBDate (System.String user, System.String password, System.Int32 encryption, Phoneword.servico2.dbGetDBDateIn parameters) [0x00029] in C:\Users\MARCIO\documents\visual studio 2015\Projects\Phoneword\Phoneword\Web References\servico2\Reference.cs:130
      at (wrapper remoting-invoke-with-check) Phoneword.servico2.g5seniorservices:GetDBDate (string,string,int,Phoneword.servico2.dbGetDBDateIn)
      at Phoneword.MainActivity+c__DisplayClass0_0.b__0 (System.Object sender, System.EventArgs e) [0x00083] in C:\Users\MARCIO\documents\visual studio 2015\Projects\Phoneword\Phoneword\MainActivity.cs:78

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 ปีที่แล้ว

      Marcio Elibio O erro está bem claro e inclusive indicando a linha e o assembly em que está ocorrendo. O código do webservice é seu? Se for, basta verificar porque não está sendo possível converter os valores de um tipo para outro(esse é o erro), na linha 78 do assembly(arquivo) MainActivity.cs

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Verifique se a variável "retorno2" que é a que recebe o resultado do método "GetDBDate" é do mesmo tipo do retorno do método.

  • @rodrigovieira6748
    @rodrigovieira6748 5 ปีที่แล้ว

    Ok, tem outro vídeo explicando como faz para consultar e deletar?

    • @kerplunkboydotNET
      @kerplunkboydotNET  5 ปีที่แล้ว

      É a mesma coisa, vai depender se seu serviço oferece métodos que fazem isso(consultar e deletar)

  • @rosbergguedes
    @rosbergguedes 7 ปีที่แล้ว

    Porque nao usa wpf?

  • @domicio1577
    @domicio1577 7 ปีที่แล้ว

    Valeu, cara. Peguei um código pra dar refactor e o código era tão cagado que acabou me confundindo mais do que ajudando. o vídeo me ajudou a colocar a idéia no lugar.

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว +1

      +Domício Medeiros fico feliz em ajudar! Não se esqueça de se inscrever e deixar seu joinha!

  • @cleitonsouza4648
    @cleitonsouza4648 7 ปีที่แล้ว

    Kerplunkboy, parabéns pela iniciativa, seu canal contem bastante conteúdo e são conteudos essenciais. Boa Sorte

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Muito obrigado! A intenção é ajudar tantos quanto eu puder! Estou nesse momento preparando uma série de vídeos onde começo "do começo" sobre programação. É mais voltado à iniciantes, mas bom até mesmo para experientes programadores darem uma olhadinha, afinal, sempre tem algum detalhe que se pode aprender. E não esqueça de deixar seu joinha e se inscrever no canal!

  • @t.j.barros.2817
    @t.j.barros.2817 7 ปีที่แล้ว +1

    Parabéns pelo tutorial, Amigo !!......uma dúvida Sem o Site oferecer uma API é possivel fazer conexão com consulta e resposta do site para o APP ?? sendo que o site pede até cadastro em tela inicial ?....ou seja , consigo inserir e obter informações e executar ações no site a partir de meu APP , sem que o site ofereça uma API ??...Obrigado e parabéns mais uma vez !!

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว +1

      Em primeiro lugar, obrigado pela audiência!
      O que você está descrevendo é geralmente conhecido como robô. Veja bem, sites, são construídos para que humanos possam interpretá-los. Nós o lemos e interagimos com ele, preenchendo campos e clicando em botões. São ações estritamente humanas. É possível construir robôs(aplicações que simulam o que um humano faria), mas dependendo do site, nem sempre será eficiente ou mesmo preciso. Principalmente em situações onde existam campos dinâmicos(gerados à partir de decisões do usuário, exemplo: uma combo que carregue conforme o usuário digita em uma caixa de texto). Então a conclusão é: Possível, até é, mas não muito confiável fazer isso. Inclusive alguns sites tentam evitar isso usando recursos como captcha ou similares para evitar que robôs o utilizem. Então se o site não disponibiliza uma API é porque não foi feito para ser consumido por aplicações terceiras. Não sei se consegui ser claro, mas se tiver mais alguma dúvida, basta postar!
      E não se esqueça de se inscrever no site e deixar seu joinha!

    • @t.j.barros.2817
      @t.j.barros.2817 7 ปีที่แล้ว +1

      Eu quem agradeço pela elucidação , Amigo !!
      Joinha dado e + um inscrito !!
      Entendi , seria um APP usando aquela classe do Boat do JAVA ou similar , ok....eu pensava em alguma coisa consultando o BD direto do Webservice ou então por HTTPClient mas ficaria limitado a fazer o GET dos dados disponibilizados pelo site. Se o site receber os parametros por GET vai daria certo, senão fica mais complicado , o site pode gerar problemas, e a qualquer atualização do site ou layout tua aplicação poderia parar. Muito Obrigado mais uma vez , Amigo !!

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว +1

      Exatamente, o layout do site é outra coisa à ser levada em consideração. E muito obrigado!

    • @t.j.barros.2817
      @t.j.barros.2817 7 ปีที่แล้ว +1

      Muito obrigado pela carga de aprendizado do canal e pela sua atenção com todos nós !!........

  • @serpeiretti
    @serpeiretti 7 ปีที่แล้ว

    Olá Kerplunk, muito obrigado pelo vídeo, esclareceu bastante.
    Eu tenho uma dúvida, tenho um webservice que contém um método que retorna um XML com uma lista de itens e eu gostaria de ler esse XML (percorrer ele inteiro) e inserir em uma tabela no banco de dados SQL Server, mas eu não estou conseguindo fazer isso.
    Se um dia puder fazer um vídeo com um exemplo desse, ficarei muito grato.
    Grande abraço e parabéns pelos vídeos.

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว +1

      Métodos de WebService(estou supondo que seja SOAP), retornam tipos providos pelo WebService. Estes tipos estão contidos no WSDL e são importados na sua aplicação quando você referencia o WebService. Com isso em mente, quando for consumir um método, repare no tipo de retorno(passe o mouse por cima do método e veja que tipo ele retorna) e simplesmente crie uma variável com esse tipo. Por exemplo, suponha que o método retorne Cliente[], o código ficaria:
      Cliente[] clientes = SuaInstanciaWebService.SeuMetodo(parametro1, parametro2...);
      Nesse ponto, a variável "clientes" conteria um array de objetos que pode ser percorrida:
      for (i = 0; i >= clientes.Count; i++)
      {
      Cliente cli = clientes[i];
      //aqui faça o que quiser com "cli"
      }

    • @serpeiretti
      @serpeiretti 7 ปีที่แล้ว

      Puxa, muito obrigado.
      No meu caso o método retorna um tipo XmlNode, nesse formato abaixo e ele não possui parâmetros, apenas retorna a lista:

      2
      8746
      Mecanismo da Bobina
      2008-2-28
      2010-2-23
      2010-5-31
      1181110
      A
      -
      Mas sua explicação já deu uma luz, vou pesquisar agora para ler todos esses registros.
      Muito obrigado mesmo pela atenção.

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว +1

      Desculpe dizer, mas quem quer que tenha implementado isso, não pensou bem em integração com terceiros. Isso é um típico exemplo de retorno "DataSet", o que é uma péssima prática. Serviços de dados, devem sempre pensar no público alvo, dispondo os tipos mais simples possíveis, o que geralmente quer dizer POCO(Plain Old C# Object) ou simples classes. Mas enfim, se precisar de mais alguma ajuda, não se acanhe, na medida do possível, vou respondendo. E obrigado pela audiência! Não se esqueça de deixar seu joinha, isso ajuda baste, é de graça e facinho...

    • @serpeiretti
      @serpeiretti 7 ปีที่แล้ว

      Realmente é um retorno Dataset e é um webservice de uma grande empresa, rs
      Bom, mas graças a sua ajuda, eu consegui resolver como no exemplo abaixo:
      webservice.Service ws = new webservice.Service(); XmlNode dados = serv.getCadastro();
      string tipo= "";
      string desc= "";
      foreach (XmlNode item in dados)
      {
      desc = item.SelectSingleNode("Tipo").InnerText;
      cod = item.SelectSingleNode("Descricao").InnerText;
      ...
      }
      Muitíssimo obrigado e tenha uma ótima semana.

  • @marcioelibio6834
    @marcioelibio6834 8 ปีที่แล้ว

    Boa tarde, como eu passo para o webservice um parâmetro do tipo "parameters"?

    • @kerplunkboydotNET
      @kerplunkboydotNET  8 ปีที่แล้ว

      Um WebService SOAP, disponibiliza métodos que seguem as mesmas regras sintáticas básicas do .NET, incluindo métodos com número indeterminado parâmetros ou array de parâmetros. Você os usa da mesma maneira que usaria um método desses que é simplesmente passar os parâmetros que podem ser usados no método, mais ou menos assim:
      SuaReferenciaDeServico.SeuMetodo("parametro1", 99, true);
      Sobre o que passar nesses parâmetros somente quem disponibiliza o serviço para orientar.

  • @elianebrito2917
    @elianebrito2917 6 ปีที่แล้ว

    Este metodo para consumir web services é o mesmo para qualquer tipo de peojeto. Como asp net, asp net mvc e outros ?

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 ปีที่แล้ว

      Se for um WebService SOAP sim, tanto faz o tipo do projeto, essa uma das maneiras mais simples de ser feito.

  • @brlcsistemas
    @brlcsistemas 6 ปีที่แล้ว

    Olá amigo, desculpe incomodar mais uma vez, fiz tudo como você explicou, ficou assim:
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    Servico01.NfeAutorizacao autorizar = new Servico01.NfeAutorizacao();
    Servico01.nfeCabecMsg cabecalho = new Servico01.nfeCabecMsg();
    cabecalho.cUF = "29";
    cabecalho.versaoDados = "3.10";
    autorizar.ClientCertificates.Add(Obter());
    string retorno = autorizar.nfeAutorizacaoLote(xml).InnerText;
    o resultado dessa variavel retorno é sempre:
    "2SEFAZBA_NFENW_v6.0.0999Rejeicao: Erro nao catalogado292018-05-03T23:57:40-03:00"
    você tem alguma sugestão do que possa ser? já verifiquei no site da sefaz os web services estão ativos, já validei o xml no site deles e validou ok...
    grato pela atenção...
    se puder me mande uma msg no zap 79 9 9831-4582 que eu te mostro debugando o código...

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 ปีที่แล้ว +1

      Vai ser mais produtivo para nós dois se você criar um tópico no VBMania.com.br para podermos discutir isso melhor do que em comentários do youtube. Honestamente assim por esses sintomas não sei o que pode estar acontecendo.

    • @brlcsistemas
      @brlcsistemas 6 ปีที่แล้ว

      Abri um tópico lá e no stackoverflow:
      pt.stackoverflow.com/questions/296115/como-enviar-um-xml-de-uma-nfec-para-o-servidor-de-homologa%C3%A7%C3%A3o-da-sefaz-usando-c
      A comunidade lá é poderosa, tem muito programador bom por lá. grato pela indicação.

  • @julianopansonatto5195
    @julianopansonatto5195 7 ปีที่แล้ว

    Bom dia, esse exemplo funcionaria com o sefaz ?

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Sefaz é um webservice SOAP então, sim, funcionaria sim.

    • @julianopansonatto5195
      @julianopansonatto5195 7 ปีที่แล้ว

      estou perdido, já estou a dias tentando consumir o webservice do sefaz e não consigo

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Juliano Pansonatto Alguma mensagem de erro?

    • @julianopansonatto5195
      @julianopansonatto5195 7 ปีที่แล้ว

      Não sei por onde começar, pelo q entendi,tenho q criar um XML é enviar para o Sefaz, e depois pegar o retorno no XML q o Sefaz envia. Seria isso ?

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Juliano Pansonatto Você entendeu o que foi feito no vídeo? Conseguiu referenciar o serviço que você quer? É tudo exatamente do mesmo jeito

  • @NetvooBrG
    @NetvooBrG 9 ปีที่แล้ว

    Show muito bom..

    • @kerplunkboydotNET
      @kerplunkboydotNET  9 ปีที่แล้ว

      +Grupo NetVoo Obrigado! Não deixe de se inscrever no canal e compartilhar o vídeo com seus amigos!

  • @danvilela
    @danvilela 7 ปีที่แล้ว

    Tentando as SEFAZ aqui para NFE e dá forbidden.. sabe o que é?

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว

      Você precisa de um certificado digital...

    • @danvilela
      @danvilela 7 ปีที่แล้ว +1

      Poderia detalhar melhor? O que faço com o certificado digital?

  • @brlcsistemas
    @brlcsistemas 6 ปีที่แล้ว

    Cara muito bom seus vídeos, inspiração para meu canal! valeu!

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 ปีที่แล้ว +1

      Opa! Muito obrigado! É um prazer poder inspirar outros a também passar adiante o conhecimento!

    • @brlcsistemas
      @brlcsistemas 6 ปีที่แล้ว

      kerplunkboy #tmj

  • @renantescaro
    @renantescaro 6 ปีที่แล้ว

    Obrigado!

  • @oncontabil8341
    @oncontabil8341 6 ปีที่แล้ว

    Tenho que consumir um web service que exige autenticação no header, alguém sabe como faz isso?

  • @vitormartins8008
    @vitormartins8008 3 ปีที่แล้ว

    obrigado pelo video , mas podia ter execultado kkkk

  • @brlcsistemas
    @brlcsistemas 6 ปีที่แล้ว

    Amigo estou tentando comunicar com a sefaz ba porém tem um erro que está tirando meu sono, montei o xml, montei o envelope tudo certinho mas não vai... você poderia me ajudar? antoniolucasmcarvalho@gmail.com

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 ปีที่แล้ว +1

      Alguma mensagem de erro? Só "não vai" está bem vago pra poder te ajudar.

    • @brlcsistemas
      @brlcsistemas 6 ปีที่แล้ว

      try
      {
      string XMLRetorno = string.Empty;
      //string xmlSoap = new Envelopar().Construir(xml);
      //string xmlSoap = new Envelopar().ConstruirAutorizacao(xml);
      string xmlSoap = new Envelopar().ConstruirConsulta(xml);
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
      Uri uri = new Uri(url);
      WebRequest webRequest = WebRequest.Create(uri);
      HttpWebRequest httpWR = (HttpWebRequest)webRequest;
      httpWR.ContentType = "application/soap+xml; charset=utf-8";
      httpWR.ContentLength = Encoding.ASCII.GetBytes(xmlSoap).Length;
      httpWR.ClientCertificates.Add(Obter());
      httpWR.Method = "POST";

      Stream reqStream = httpWR.GetRequestStream(); //erro acontece aqui
      StreamWriter streamWriter = new StreamWriter(reqStream);
      streamWriter.Write(xmlSoap, 0, Encoding.ASCII.GetBytes(xmlSoap).Length);
      streamWriter.Close();
      WebResponse webResponse = httpWR.GetResponse();
      Stream respStream = webResponse.GetResponseStream();
      StreamReader streamReader = new StreamReader(respStream);
      XMLRetorno = streamReader.ReadToEnd();
      return XMLRetorno;
      }
      catch (WebException ex)
      {
      using (var stream = ex.Response.GetResponseStream())
      using (var reader = new StreamReader(stream))
      {
      Console.WriteLine(reader.ReadToEnd());
      }
      throw;
      }

    • @brlcsistemas
      @brlcsistemas 6 ปีที่แล้ว

      quando chega no reqStream dá erro: Length = 'reqStream.Length' threw an exception of type 'System.NotSupportedException' já revirei um milhão de foruns e esse erro é cabuloso meu Deus, me ajude amigo.

    • @kerplunkboydotNET
      @kerplunkboydotNET  6 ปีที่แล้ว

      Você tem o webservice referenciado na sua aplicação? Se já tem, basta consumir os métodos dele, tenho um outro vídeo aqui no canal mostrando como fazer isso.

  • @renantescaro
    @renantescaro 6 ปีที่แล้ว

    Achei que era o Pirula da programação kk

  • @shortscutos
    @shortscutos 7 ปีที่แล้ว +1

    Que exemplo horrível. O consumo que é o principal, não fez. Além disso o instrutor se enrolou.

    • @kerplunkboydotNET
      @kerplunkboydotNET  7 ปีที่แล้ว +5

      +Thiago Barbosa que pena que não gostou. Aguardamos o seu vídeo então para uma explicação melhor. Obrigado!

    • @ASouza-ut9kb
      @ASouza-ut9kb 7 ปีที่แล้ว

      kkkkkk

    • @marcelovieira5822
      @marcelovieira5822 6 ปีที่แล้ว

      kkkkkk