Enviar XML para Web Service

Galera, bom dia!!

Estou criando um projeto que precisa enviar um xml para um web service e receber outro.

Porém, nunca programei pra web, entao queria umas dicas e uns exemplos, pra que eu possa me virar um pouco.

É muito complicado?

Como seria uma conexão com um web service?

Valeu !!!

Para criação de XML:
Procure por Xtream:
http://xstream.codehaus.org/tutorial.html

XFire
Para a parte de web service:

Valeu Pedrosa, to dando uma olhada.

o Xream eu ah conheço pouco, mas o XFire nunca ouvi falar.

To dando uma olhada.

Valeuuuu

Só evite esse caso, como um ws já é um xml vc poderia passar alguma coisa mais simples baseado no padrão restfull como JSON:

Artigo Legal:
http://www.infoblogs.com.br/view.action?contentId=28428&Os+7+habitos+dos+desenvolvedores+de+WebServices+altamente+eficazes

Cara, to com uma dúvida ainda.

Para eu acessar um Web Service eu preciso criar só o client do Web Service ou preciso criar um Web Service?

Para acessar, só precisar criar o Web Service Client.
Nesse link explica como criar um Client através da ferramenta wsimport do java SE 6.

http://blog.caelum.com.br/2007/07/11/webservices-sem-servidor-de-aplicacao-no-java-6/

Oooooo garoota…

Thanksssss Renata ! =)

Basta apenas o cliente e com xfire ficaria assim:

public String getXpto(String usuario, String senha, int idEmpresa) throws Exception {  
    //url do wsdl
    URL url = new URL(getUrlWS());  
    //nome do servico e parametros
    Object[] resultado = cliente.invoke("getXpto",new Object[] { param1, param2, param3 });  
    return resultado[0].toString();  
}  

Sem configuração alguma, basta apenas ter as depedencias do projeto no ClassPath.

show Pedrosa…

Precisa ser um projeto Web?? com Tomcat, etc… ??

Posso apenas chamar este método de um outro objeto ou uma factory qualquer ?

ALguém poderia me dar uma luz???

Não sei por onde começar…

é um aaplicação simples, apenas conectar a um web service e enviar um xml…

Galera, fiz uns testes e cheguei nos seguintes resultados:

Estou tentando consumir o seguinte webService:

http://www.osmobile.com.br/integrador/Integrator.asmx

com o seguinte wsdl:

http://www.osmobile.com.br/integrador/Integrator.asmx?WSDL

para consumir tenho o seguinte código:


String endpoint = "http://www.osmobile.com.br/integrador/Integrator.asmx";

        Service  service = new Service();
        Call     call    = (Call) service.createCall();

        call.setUseSOAPAction(true);
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName(new QName("http://www.osmobile.com.br/webservices/ClientIntegration/Process", "Process"));

        String ret = (String) call.invoke( new Object[] { idEmpresa, dsLogin, dsSenha, xmlEnvio } );

        System.out.println("Resposta:/n" + ret);

onde idEmpresa, dsLogin, dsSenha e xmlEnvio são variáveis pré inicializadas.

Porém estou recebendo o seguinte erro:

Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
 faultSubcode: 
 faultString: Server did not recognize the value of HTTP Header SOAPAction: .
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}stackTrace:Server did not recognize the value of HTTP Header SOAPAction: .
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
        at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
        at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
        at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at mxtelefonica.Main.main(Main.java:164)

        {http://xml.apache.org/axis/}hostname:tchelo

Server did not recognize the value of HTTP Header SOAPAction: .
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
        at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
        at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
        at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)

Alguém poderia me ajudar???

Acompanhando, estou com um webservice identico, porem com menos campos.
teria como você postar a classe completa, caso eu consiga enviar posto aqui o que consegui fazer.
pois apenas o trecho colado não consegui fazer funcionar, sim ainda não sou um expert.

Obrigado.

Leonardo Benedeti