jackfaria 0 Denunciar post Postado Fevereiro 12, 2011 Desenvolvi um sistema que emite nfe, mas entrei num abismo no qual não consigo sair, e este abismo é o seguinte: - Se e somente se, eu emitir a nota ex. de minas eu tenho o webservice de minas ok? correto até então. Mas caso eu tenha que emitir para outros estados eu terei que adicionar todos os webservices de todos os estados. Ai é que está a questão, existe uma maneira de fazer um webservice generico de recepção, mudando assim somente a url de cada um? Outra coisa, ja pesquisei sobre webservice genérico, mas não consigo transferir o conceito para o WS da Sefaz. Agradeço! Att, jackfaria. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Fevereiro 17, 2011 não precisa fazer isso não cara, não precisa adicionar os demais webservices, eu tenho uma situação parecida. a única coisa é estar usando a mesma versão do webservice, pois nunca testei com versões diferentes. eu me comunico com RJ e SP. ......................................... Como eu fiz Criei uma tabela dá o nome que quizer tipo URL_SERVICO com os campo cUF Servico UrlHomologacao UrlProducao cUF eu coloco o código daí você faz uma consulta no banco de dados para 'pegar' a url do servico desejado, para o estado desejado Agora digamos que você tenha posto o nome WSNfeRecepção para o serviço de recepção de notas fiscais daí você faz assim Dim cons As New HNfeRetRecepcao.NfeRetRecepcao2 Dim cab As New HNfeRetRecepcao.nfeCabecMsg Dim docEnvio As New XmlDocument Dim docRet As New XmlDocument Dim xmlRet As XmlElement 'Define parâmetros da solicitação cons.Timeout = 120000 cons.nfeCabecMsgValue = cab cons.ClientCertificates.Add(_certificado) cons.Url = "urldocervico" docEnvio.load ("caminho do arquivo xml que será transmitido") 'Faz a solicitação de consulta do recibo xmlRet = cons.nfeRetRecepcao2(docEnvio) 'Carrega os dados de retorno no objeto docRet.LoadXml(xmlRet.OuterXml) Com isso você pode fazer um 'chaveamento' do webservice.. abraços Compartilhar este post Link para o post Compartilhar em outros sites
jackfaria 0 Denunciar post Postado Fevereiro 17, 2011 Daniel, bom dia! Começando as explicações de cara já vejo um problema do meu em relação ao seu: Observe: Dim uri = "Aqui eu pego a url que me é fornecida pela sefaz de um estado" 'defino o endpointaddress com a url, pois o ws não contem a opção "ws.url"' Dim endpoint As New ServiceModel.EndpointAddress(uri) 'Assim adiciono a URL atraves do endpoint no WS' Dim wsa As New Recepcao.NfeRecepcao2Soap12Client(DefObjBinding, endpoint) wsa.ClientCredentials.ClientCertificate.Certificate = DadosNfe.GetCertificado() Meu Recepcao.NfeRecepcao2Soap12Client não possui as opções: Timeout = 120000 cons.Url = "urldocervico" Detalhe, este DefObjBinding é somente um objeto de conexao: Private Function DefObjBinding() As ServiceModel.BasicHttpBinding Dim Binding As New ServiceModel.BasicHttpBinding() Binding.Security.Mode = ServiceModel.BasicHttpSecurityMode.Transport Binding.Security.Transport.ClientCredentialType = ServiceModel.HttpClientCredentialType.Certificate Binding.Security.Message.ClientCredentialType = ServiceModel.BasicHttpMessageCredentialType.Certificate Binding.MessageEncoding = ServiceModel.WSMessageEncoding.Text Binding.TextEncoding = System.Text.Encoding.UTF8 Binding.AllowCookies = False Binding.MaxBufferPoolSize = CLng(ConfigurationManager.AppSettings("LengthEnviar")) Binding.MaxBufferSize = CInt(ConfigurationManager.AppSettings("LengthEnviar")) Binding.MaxReceivedMessageSize = CLng(ConfigurationManager.AppSettings("LengthReceber")) Binding.BypassProxyOnLocal = False Binding.UseDefaultWebProxy = False Dim ReadQuot As New System.Xml.XmlDictionaryReaderQuotas() ReadQuot.MaxDepth = CInt(ConfigurationManager.AppSettings("MaxDepth")) ReadQuot.MaxArrayLength = CInt(ConfigurationManager.AppSettings("MaxArrayLength")) ReadQuot.MaxBytesPerRead = CInt(ConfigurationManager.AppSettings("MaxBytesPerRead")) ReadQuot.MaxNameTableCharCount = CInt(ConfigurationManager.AppSettings("MaxNameTableCharCount")) ReadQuot.MaxStringContentLength = CInt(ConfigurationManager.AppSettings("maxStringContentLength")) Binding.ReaderQuotas = ReadQuot Dim TimeOut As New TimeSpan(0, 0, CInt(ConfigurationManager.AppSettings("TimeOut"))) Binding.CloseTimeout = TimeOut Binding.OpenTimeout = TimeOut Binding.ReceiveTimeout = TimeOut Binding.SendTimeout = TimeOut Return Binding End Function Assim do meu jeito, quando executo a aplicação ele gera este erro: System.ServiceModel.FaultException: unknown Obrigado pelas orientações Daniel! Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
jackfaria 0 Denunciar post Postado Fevereiro 17, 2011 Pessoal, problema Resolvido... Encontrei a danada da solução! Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Fevereiro 17, 2011 Cara se possível poste a soluçãopois existe pouco mterial sobre NFe. Eu faço daquela forme, pois adiciono uma referência ao projeto no Visual studio Abraços Compartilhar este post Link para o post Compartilhar em outros sites
jackfaria 0 Denunciar post Postado Fevereiro 18, 2011 Para alterar a url do webservice, faz-se necessario criar um novo endpointaddress. Sendo assim, segue o exemplo abaixo: dim url = "url do estado" dim ws as new WSrecepcao.RecepcaoClient ws.endpoint.address = new endpointaddress(url) Deste modo um novo endpoint é criado e setado como default em todas as outras configuraçoes, mas com url nova. Qualquer duvidas sobre nota fiscal estou a disposiçao de ajudar. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
neibala2000 0 Denunciar post Postado Fevereiro 28, 2015 Jack Faria Você poderia me enviar seu codigo, para que possa verificar como ficou após a conclusão, pois estou passando pelo mesmo problema na identificação do endpoint, binding e até mesmo sobre a questão do soap ? Compartilhar este post Link para o post Compartilhar em outros sites