bom dia a todos.estou querendo fazer com que o próprio netbeans gere para mim um cliente para a nfe
pelos tutoriais que eu vi ate o momento parece ser simples…
mas vamos la ao problema.
criei um projeto java e em seguida mandei o netbeans criar
um web service cliente
la, na localização do wsdl e do cliente
escolhi a opção:
WSDL _URL colocando a url:
https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx
quando mando em concluir:
aparece o erro:
Problema com o download do arquivo wsdl ou do esquema.
Verifique a URL, as definições de proxy ou se o servidor esta em execução.
URL: https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx
detalhe tudo esta ok:
não tem restrições:
outro detalhe:
antes deste erro aconteceu outro que misteriosamente sumiu:
que era reclamando do certificado do estado. porem sumiu esse erro: e não consigo reproduzir mais…
Se eu tento abrir essa URL, não abre um arquivo WSDL…
depois de correr muito consegui gerar as classes para acessar as nfe via netbeans
utilizando os wsdl
ate ai tudo bem…
foi gerado para status de serviço o método:
public static NfeResultMsg nfeStatusServicoNF(br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeDadosMsg nfeDadosMsg) {
br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4 service = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4();
br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4Soap port = service.getNfeStatusServico4Soap();
return port.nfeStatusServicoNF(nfeDadosMsg);
}
eu alterei este método para passar a url:
URL url = new URL(“https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx”);
o método então ficou assim:
public static NfeResultMsg nfeStatusServicoNF(br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeDadosMsg nfeDadosMsg) {
URL url = new URL(“https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx”);
br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4 service = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4(url);
br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4Soap port = service.getNfeStatusServico4Soap();
return port.nfeStatusServicoNF(nfeDadosMsg);
}
o código de chamada ficou:
StringBuilder xml = new StringBuilder();
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
.append("<consStatServ versao=\"")
.append("4.00")
.append("\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<tpAmb>")
.append("1")
.append("</tpAmb>")
.append("<cUF>")
.append("35")
.append("</cUF>")
.append("<xServ>STATUS</xServ>")
.append("</consStatServ>");
br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeDadosMsg dadosMsg
= new br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeDadosMsg();
dadosMsg.getContent().add(xml.toString());
NfeResultMsg result = Nfe40Util.nfeStatusServicoNF(dadosMsg);
String s = (String) result.getContent().get(0);
me retorna o seguinte erro:
Exception in thread “main” javax.xml.ws.WebServiceException: {http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4}NfeStatusServico4 não é um serviço válido. Os serviços válidos são {http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4}NFeStatusServico4
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:310)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:215)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:196)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:192)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:104)
at javax.xml.ws.Service.(Service.java:77)
at br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeStatusServico4.(NfeStatusServico4.java:50)
at nfeclassesuteis.Nfe40Util.nfeStatusServicoNF(Nfe40Util.java:21)
at funcoes.NFeStatus.Processar(NFeStatus.java:71)
at funcoes.NFeStatus.main(NFeStatus.java:233)
C:\Users\admin\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 5 segundos)
descobrir o problema ate agora.
o problema era que o wsdl estava com um erro:
o nome do método estava errado.
rs…
agora tenho outro problema:
neste trecho abaixo deve ter algum erro
pois não esta aceitando como string…
o que pode ser?
br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeDadosMsg dadosMsg
= new br.inf.portalfiscal.nfe.wsdl.nfestatusservico4.NfeDadosMsg();
dadosMsg.getContent().add(xml.toString()); // < o erro é aqui
Qual o erro?
O método getContent() retorna qual tipo de dado?
O que o add espera receber?
staroski obrigado…
descobri este problema ai… ele precisava de um Document…
vou conseguindo aos poucos… é porque na documentação da classe não especifica que tivo apenas fala que é um objeto… mas este ponto já esta resolvido…
como eu consegui: passar por esse problema…
consegui consultar status de serviço do estado de são Paulo…
porem fui tentar o estado de minas gerais… e me retorna o seguinte erro:
Exception in thread “main” javax.xml.ws.WebServiceException: Method nfeStatusServicoNF is exposed as WebMethod, but there is no corresponding wsdl operation with name {http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4}nfeStatusServicoNF in the wsdl:portType{http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4}NFeStatusServico4Soap
já tentei de tudo em minas… e ate agora não consegui: