Procurei muuuito e ainda não consegui o que quero =/
Ainda estou lendo… testando e tentando… mas ta dificil… cheguei em um ponto te ter muitos caminhos para seguir… muitas bibliotecas para baixar que estou achando que vou pegar o caminho errado… então acho melhor ter uma ajuda ou mesmo uma indicação de vocês…
Meu ambiente é o seguinte… tenho um WebService escrito em .NET com um método de HelloWorld que ao acessar pelo browser ele me dá o seguinte WSDL (agora que vi… esse não eh mesmo o WSDL… =/ abri um WSDL aki e vi que as tags são diferentes):
SOAP 1.2
The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.
Como desenvolvimento to usando o eclipse 3.4 com os plugis para desenvolvimento web… e vou começar um novo projeto (precisa ser algum projeto especifico do eclipse ???)… pois o outro ja ficou meio bagunçado… ^^
Agora estou com duvidas sobre as outras bibliotecas… as que preciso para trabalhar com SAAJ e Axis2… porque não achei um pacote, algo do tipo… lib/*.jar como as que veem do XSTream… no final acabei baixando biblioteca a biblioteca pelo site http://www.java2s.com/Code/Jar/Web-Services-AXIS2/CatalogWeb-Services-AXIS2.htm, que foi onde comecei a me atrapalhar, pq acho que deu conflito no projeto…
Bom… meus próximos passos serão criar um projeto e adicionar as bibliotecas e tentar chamar esse método do WebService…
Para isso vou procurar seguir o tutorial da própria sun sobre JEE. (que vem com o download).
Acredito que terei problemas ao improtar as bibliotecas… algums dica ?
public static void main(String[] args) {
try{
// 1 Criar a Mensagem com o protocolo desejado
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
// 2 obter as partes do envelope
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
header.detachNode(); // elima o cabecalho, caso nao va utiliza-lo
// 3 montar o corpo com os elementos desejados (metodos do WS a serem chamados)
//HelloWorld no meu exemplo
QName bodyName = new QName("http://MeuWebService.NET/Metodos.asmx", "HelloWorld", "m");
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
SOAPElement symbol = bodyElement.addChildElement(new QName("symbol"));
symbol.addTextNode("HW");
// 4 Montar a conexão com o WS
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
URL url = new URL("http://MeuWebService.NET/Metodos.asmx");
SOAPMessage response = connection.call(message, url);
// 5 Pegar o retorno da chamada
SOAPBody soapBody = response.getSOAPBody();
Iterator iterator = soapBody.getChildElements(bodyName);
SOAPBodyElement repsonseElement = (SOAPBodyElement)iterator.next(); // ERRO AKI !!!
String msg = repsonseElement.getValue();
System.out.println(msg);
}catch(SOAPException e){
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
[/code]
E o erro ate o momento, na hora de tentar recuperar o retorno do método, esse exemplo montei com ajuda do tutorial, vou analizar com calma para resolver… mas se alguem ai ja matar de cara… agradeço !!! =]
Exception in thread "main" java.util.NoSuchElementException
at com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl$3.next(ElementImpl.java:764)
at integrar.net.SOAHelloWorld.main(SOAHelloWorld.java:48)
Bom… estou tentendo de outroa forma… com a ajuda do João
Parei no eclipse onde peço apra criar um novo WebService… ao informar o ServiceDefinition, coloco o endeço do WSDL… onde percebi que o XML na verdade eh algumas informações… e não realmente o meu arquivo WSDL… =/
Ou seja… ele me fala que o arquivo está inválido… Parece que terei que criar um WSDL para o meu metodo HelloWorld antes de fazer esse passo…
Eh o seguinte… fiz um teste com o WebService usando .NET… (tive que usar a ferramenta da microsoft… =/)
Enfim… no projeto que criei consegui acessar os metodos do WebService… tudo no next - next - next…
No final vi que foi criado um arquivo WSDL que descreve todos os metodos do webservice… com Request e Response… Tentei usar esse mesmo WSDL pelo eclipse criando um projeto “WebService Client” e indicando o caminho do arquivo WSDL… mas n deu certo… disse que o arquivo eh invalido…
Com isso posso dizer que para cada linguagem o WSDL eh diferente ??
No momento estou instalando o plugin WSDL Extensions Generator no eclipse… dessa forma espero gerar o WSDL e em seguida criar a classe que irá consumir os metodos… Estou no caminho certo ?
Vlw !!
…
Opa… acho que mais um passo realizado…
Criei um “WebService Client” baseado no WSDL correto (Consegui usar o mesmo do .NET, estava errando no caminho, que não pode ser o o arquivo WSDL direto… precisa usar a URL).
Bom… agora meu projeto tem um monte de classes (6 ao todo) que ainda não sei como usar… ^^
mas imagino… pois tem Soap e Soap12 no nome… hehe
Espero estar indo pelo cominho certo… se eh o mais facil… nao sei ainda… hehe
Depois que olhei os a estrutura das classes… so precisei digitar essas 3 linhas de codigo para testar meu metodo helloWorld…
[code]public static void main(String[] args) throws RemoteException, ServiceException {
MetodosWSLocator loc = new MetodosWSLocator();
MetodosWSSoap soap12 = loc.getMetodosWSSoap12();
System.out.println(soap12.helloWorld());
}[/code]
Funcionou numa boa… (ao menos para esse metodo basico) hehe
Ele importou biblioteca de tudo que eh lugar… do TomCat, do JDK 1.5 (no meu caso) mais axis.jar, saaj.jar e wsdl4j.jar entre outras…
Tô vendo que vou ter um pouco de trabalho para jogar esse exemplo dentro da minha aplicação… =/
Bom galera… ngm comentou nada… mas espero que tenham lido e que alguem venha a aprender algo com o post… ^^
E se algo ai puder ser feito de outra forma… por favor postem…