Acessar, Consumir WebService com java

Bom Dia a Todos estou precisando acessar um webservice da receita para enviar arquivos da NFP Nota Fiscal Paulista, nao sou um expert em java aida como muito de voces…

mas ja dei uma lida em muito material altes de perguntar a voces, sobre o que é web service tudo mais …
o enderweço do serviço que preciso acessar é esse…

https://www.nfp.fazenda.sp.gov.br/ws/arquivocf.asmx?WSDL

so que eu to usando u axis para fazer as chamas mas os tutoriais que arrumei sao muito simples mas me deu uma ideia de como fazer…
crie uma classe desse geito so par teste…

mas empaco e na hora de acessar os metodos do servico

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;


public class NFPKawakami {
	
	public static void main(String[] args) {
		// Endereço, local onde encontra-se o Web Service
		String sServico = "https://www.nfp.fazenda.sp.gov.br/ws/arquivocf.asmx";
		String sBody = new String();

		sBody = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
		sBody += "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">";
		sBody += "<soap12:Header>";
		sBody += "<Autenticacao Usuario=\"user\" Senha=\"senha\" CNPJ=\"0000000000000\" CategoriaUsuario=\"1\" xmlns=\"https://www.nfp.sp.gov.br/ws\"/>";
		sBody += "</soap12:Header>";
		sBody +=		"<soap12:Body>";
		sBody += 				"<Enviar xmlns=\"https://www.nfp.sp.gov.br/ws\">";
		sBody += 						"<NomeArquivo>nomeArquivo</NomeArquivo>";
		sBody += 						"<ConteudoArquivo>0</ConteudoArquivo>";
		sBody +=						"<EnvioNormal>false</EnvioNormal>";
		sBody += 						"<Observacoes></Observacoes>";
		sBody += 				"</Enviar>";
		sBody += 		"</soap12:Body>";
		sBody += "</soap12:Envelope>";
		
	try {
		// Criando e configurando o serviço
		Call call = (Call) new Service().createCall();
		// Configurando o endereço.
		call.setTargetEndpointAddress(sServico);
		// Marcando o método a ser chamado. 
		call.setOperationName("Enviar");
		// Parâmetros da função soma.
		Object[] Parametros = new Object[]{new Integer(2),new Integer(4)};

		//Parametros[0] =  String("");
		
		// Retorno da Função
		
		Integer ret = (Integer)call.invoke(Parametros);
        
		// Imprime o resultado: ret = 2 + 4.
		System.out.println("Resultado : " + ret);
	} catch (ServiceException e) {
		System.out.println("ServiceException : " + e);
	} catch (RemoteException e) {
		System.out.println("RemoteException : " + e);
	}


	}

}

ERRO: RemoteException : Possible SOAP version mismatch: Envelope namespace http://schemas.xmlsoap.org/soap/envelope/ was unexpected. Expecting http://www.w3.org/2003/05/soap-envelope.

Ou seja tenho que passar mais parametros como cabecalho Heander, Envelope igual na String sBody, mas nao sei como fazer isso…

se algem poder me ajudar agradeceria muito…

fala queridao blz?

é simples…

crie um projeto Web no Eclipse,
depois vc copia e cola esse WSDL (pegue do codigo fonte… para nao copiar os “-”),
em uma pasta(por padrao coloque em uma pasta chamada wsdl) dentro do seu WebContent

depois dali fica tudo mais facil
clique com o botao direito emcima do wsdl no seu projeto,
depois cliente em criar Web Services, e coloca em Generate Client

ai vai aparecer uma telinha com uma figura igual a um termometro. ai vc coloca pra cima
até aparece Install Client

e pronto é next e finish

ali ele vai criar os Objetos que vc precisa(TO(Conhecido tbm como VO), as interfaces etc…)

depois vc precisara fazer uma classe para fazer o lookup(segue abaixo o main da classe que faz o lookup)

Obs: Esses objetos que estou usando nessa classe, são os objetos reais que vc vai usar****

[code]import java.rmi.RemoteException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import br.gov.sp.nfp.www.ws.ArquivoCFSoap12;

public class TesteNF {

public static void main(String[] args) {
	
	try {
		Context context = new InitialContext();
		ArquivoCFSoap12 arquivoCFSoap12  = (ArquivoCFSoap12) context.lookup("ArquivoCF/remote");
		arquivoCFSoap12.enviar("nomeArquivo", "conteudoArquivo", true, "observacoes");

	} catch (NamingException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (RemoteException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}[/code]

ai é só vc colocar no seu codigo e usar essa classe…

espero ter ajudado.

Utiliza algum framework para gerar o cliente:
Axis2, CXF, JAX-WS, etc

Você pode gerar suas classe de cliente com o Axis, que é nativo do Eclipse.
Clique em File-> New… WebService-> WebService Client

No Serice definition, passe o caminho da WSDL. https://www.nfp.fazenda.sp.gov.br/ws/arquivocf.asmx?WSDL
Com isso ele gera as classes, ai basta trabalhar agora.

  • A NF-p é bem simples comparando com a NF-e. Você nao precisa mais nada além dessas classes para gerar, e trasmitir e receber retornos das suas consultas e envios.

Boa Sorte.

obrigado pessoal pela atenção vou tentar fazer o que vcs me falaram…

mas o meu eclipse nao tem essas opções ai não !

qual versão vcs usam?
obrigado…

Para fazer isso que eu te falei melhor usar o 3.3 ou superior… :lol:

Prezado Luiz Fernando Pereira,

eu coloco o arquivo dentro da pasta como um arquivo texto se sim salvo com qual extensao?

arquivo.wsdl

valeu…

Você pode usar o WTP ou 3.3.

baixei agora o eclipse e estou usando a versao:

Eclipse Platform

Version: 3.4.0
Build id: I20080617-2000

© Copyright Eclipse contributors and others 2000, 2008. All rights reserved.
Visit http://www.eclipse.org/platform

This product includes software developed by the
Apache Software Foundation http://www.apache.org/

Alguem consegui rodar o web service client da “nota fiscal paulista” ?

Uma das minhas duvidas eh quanto ao conteudo do arquivo. Como passar esse parametro ? Tem que enviar o conteudo do arquivo usando FileReader ?

Outra duvida eh a autenticacao (usuario/senha), onde eh declarada ?

obrigado

Esta dando esse erro:

Boa tarde pessoal, estou com uma duvida sobre web services e aproveitando a duvida gostaria que alguem me ajuda-se.

Bom criei um web services que o serviço me retorna um WebRowSetImpl . Agora não to sabendo utilizar esse retorno no client, estou desenvolvendo em NetBeans 6.1. Quando eu tento buscar os dados do result que vem do metodo WebRowSetImpl do servico nao mostra as metodos getString ou outro. como Faço para buscar os dados do result ?

essa opcao eu nao consigo configurar:

Você pode gerar suas classe de cliente com o Axis, que é nativo do Eclipse.
Clique em File-> New… WebService-> WebService Client


tem que instalar algum plugin?
qual?

att. Jonas

OLá pessoal, sei que o post é antigo, mas estou estudando web services e deparei-me aqui.

Fiz o exemplo citado acima, pelo o nosso amigo nandolup, incluindo a sua classe para fazer o lookup que ele utilizou:

[code] import java.rmi.RemoteException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import br.gov.sp.nfp.www.ws.ArquivoCFSoap12;

public class TesteNF {

public static void main(String[] args) {

     try {  
         Context context = new InitialContext();  
         ArquivoCFSoap12 arquivoCFSoap12  = (ArquivoCFSoap12) context.lookup("ArquivoCF/remote");
         arquivoCFSoap12.enviar("nomeArquivo", "conteudoArquivo", true, "observacoes");

     } catch (NamingException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     } catch (RemoteException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
 }

}[/code]

porém quando tente rodar no eclipse, aparece o seguinte erro:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at TesteMain.TesteNF.main(TesteNF.java:16)

Alguém poderia me dizer o que eu estou fazendo de errado?

OBrigado!!!

olha seu codigo…

vc colocou com esses # ???

utilize das tag code, qndo for mostrar códigos, obrigado

ola pessoal
estou com a mesma duvida
nao consigo gerar as classes java usando o wsdl
da nota de americana
alguem pode me ajudar
fiz exatamente como o 2º topico, do nandolup
na hora do finish, aparece uma mensagem de erro

IWAB0399E Error in generating Java from WSDL:  java.io.IOException: Emitter failure.  Invalid endpoint address in port NfseSoap in service NfseLocator:  https://nfse.americana.sp.gov.br:442/WSNacional/nfse.asmx
    java.io.IOException: Emitter failure.  Invalid endpoint address in port NfseSoap in service NfseLocator:  https://nfse.americana.sp.gov.br:442/WSNacional/nfse.asmx
    at org.apache.axis.wsdl.toJava.JavaServiceImplWriter.writeFileBody(JavaServiceImplWriter.java:242)
    at org.apache.axis.wsdl.toJava.JavaWriter.generate(JavaWriter.java:127)
    at org.apache.axis.wsdl.toJava.JavaServiceWriter.generate(JavaServiceWriter.java:112)
    at org.apache.axis.wsdl.toJava.JavaGeneratorFactory$Writers.generate(JavaGeneratorFactory.java:421)
    at org.apache.axis.wsdl.gen.Parser.generate(Parser.java:476)
    at org.apache.axis.wsdl.gen.Parser.access$000(Parser.java:45)
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:362)
    at java.lang.Thread.run(Unknown Source)

o arquivo wsdl segue abaixo

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.nfe.com.br/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.nfe.com.br/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://www.nfe.com.br/">
      <s:element name="ConsultarNfseRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarNfseResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarNfsePorRpsRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarNfsePorRpsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarLoteRpsRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarLoteRpsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarSituacaoLoteRpsRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ConsultarSituacaoLoteRpsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="RecepcionarLoteRpsRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="RecepcionarLoteRpsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="CancelarNfseRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="CancelarNfseResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GerarNfseRequest">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GerarNfseResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="outputXML" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
  </wsdl:types>
  <wsdl:message name="ConsultarNfseSoapIn">
    <wsdl:part name="parameters" element="tns:ConsultarNfseRequest" />
  </wsdl:message>
  <wsdl:message name="ConsultarNfseSoapOut">
    <wsdl:part name="parameters" element="tns:ConsultarNfseResponse" />
  </wsdl:message>
  <wsdl:message name="ConsultarNfsePorRpsSoapIn">
    <wsdl:part name="parameters" element="tns:ConsultarNfsePorRpsRequest" />
  </wsdl:message>
  <wsdl:message name="ConsultarNfsePorRpsSoapOut">
    <wsdl:part name="parameters" element="tns:ConsultarNfsePorRpsResponse" />
  </wsdl:message>
  <wsdl:message name="ConsultarLoteRpsSoapIn">
    <wsdl:part name="parameters" element="tns:ConsultarLoteRpsRequest" />
  </wsdl:message>
  <wsdl:message name="ConsultarLoteRpsSoapOut">
    <wsdl:part name="parameters" element="tns:ConsultarLoteRpsResponse" />
  </wsdl:message>
  <wsdl:message name="ConsultarSituacaoLoteRpsSoapIn">
    <wsdl:part name="parameters" element="tns:ConsultarSituacaoLoteRpsRequest" />
  </wsdl:message>
  <wsdl:message name="ConsultarSituacaoLoteRpsSoapOut">
    <wsdl:part name="parameters" element="tns:ConsultarSituacaoLoteRpsResponse" />
  </wsdl:message>
  <wsdl:message name="RecepcionarLoteRpsSoapIn">
    <wsdl:part name="parameters" element="tns:RecepcionarLoteRpsRequest" />
  </wsdl:message>
  <wsdl:message name="RecepcionarLoteRpsSoapOut">
    <wsdl:part name="parameters" element="tns:RecepcionarLoteRpsResponse" />
  </wsdl:message>
  <wsdl:message name="CancelarNfseSoapIn">
    <wsdl:part name="parameters" element="tns:CancelarNfseRequest" />
  </wsdl:message>
  <wsdl:message name="CancelarNfseSoapOut">
    <wsdl:part name="parameters" element="tns:CancelarNfseResponse" />
  </wsdl:message>
  <wsdl:message name="GerarNfseSoapIn">
    <wsdl:part name="parameters" element="tns:GerarNfseRequest" />
  </wsdl:message>
  <wsdl:message name="GerarNfseSoapOut">
    <wsdl:part name="parameters" element="tns:GerarNfseResponse" />
  </wsdl:message>
  <wsdl:portType name="NfseSoap">
    <wsdl:operation name="ConsultarNfse">
      <wsdl:input message="tns:ConsultarNfseSoapIn" />
      <wsdl:output message="tns:ConsultarNfseSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="ConsultarNfsePorRps">
      <wsdl:input message="tns:ConsultarNfsePorRpsSoapIn" />
      <wsdl:output message="tns:ConsultarNfsePorRpsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="ConsultarLoteRps">
      <wsdl:input message="tns:ConsultarLoteRpsSoapIn" />
      <wsdl:output message="tns:ConsultarLoteRpsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="ConsultarSituacaoLoteRps">
      <wsdl:input message="tns:ConsultarSituacaoLoteRpsSoapIn" />
      <wsdl:output message="tns:ConsultarSituacaoLoteRpsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="RecepcionarLoteRps">
      <wsdl:input message="tns:RecepcionarLoteRpsSoapIn" />
      <wsdl:output message="tns:RecepcionarLoteRpsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="CancelarNfse">
      <wsdl:input message="tns:CancelarNfseSoapIn" />
      <wsdl:output message="tns:CancelarNfseSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="GerarNfse">
      <wsdl:input message="tns:GerarNfseSoapIn" />
      <wsdl:output message="tns:GerarNfseSoapOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="NfseSoap" type="tns:NfseSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="ConsultarNfse">
      <soap:operation soapAction="http://www.nfe.com.br/ConsultarNfse" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ConsultarNfsePorRps">
      <soap:operation soapAction="http://www.nfe.com.br/ConsultarNfsePorRps" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ConsultarLoteRps">
      <soap:operation soapAction="http://www.nfe.com.br/ConsultarLoteRps" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ConsultarSituacaoLoteRps">
      <soap:operation soapAction="http://www.nfe.com.br/ConsultarSituacaoLoteRps" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="RecepcionarLoteRps">
      <soap:operation soapAction="http://www.nfe.com.br/RecepcionarLoteRps" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="CancelarNfse">
      <soap:operation soapAction="http://www.nfe.com.br/CancelarNfse" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GerarNfse">
      <soap:operation soapAction="http://www.nfe.com.br/GerarNfse" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="Nfse">
    <wsdl:port name="NfseSoap" binding="tns:NfseSoap">
      <soap:address location="https://nfse.americana.sp.gov.br:442/WSNacional/nfse.asmx" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

http://www.eclipse.org/webtools/community/tutorials/TopDownAxis2WebService/td_tutorial.html