Problemas com header em WS cliente

6 respostas
R
Pessoal. Procurei no fórum e não encontrei nada para me ajudar. Não sei também se estou no subfórum correto. Mas a questão é que preciso acessar o WS da CTF. Criei via wizard do Eclipse as classes para acessar. Porém o WS da CTF necessita de um header com login e senha. O wizard do Eclipse não criou isso. Então fiquei "estonado" porque apesar de conhecer alguma coisa sobre WS ( já fiz um e fiz varios clientes para WS .net, php etc.. ) nunca usei o header. Alguem já passou por isso e pode dar uma dica de como colocar tags no header nas classes geradas pelo Eclipse? As tentativas que fiz usando SOAPHeaderElement não funcionaram. Olhem o que já fiz:
WsCopiaSoap ws = sampleWsCopiaSoapProxyid.getWsCopiaSoap();
		SOAPHeaderElement soapLogin = new SOAPHeaderElement("http://tempuri.org/", "SoapLogin");
		SOAPHeaderElement login = new SOAPHeaderElement("http://tempuri.org/","login");
  login.addTextNode("usuariodologin");
		SOAPHeaderElement senha = new SOAPHeaderElement("http://tempuri.org/", "senha");
		senha.addTextNode("senhasecreta");
		soapLogin.addChild(login);
		soapLogin.addChild(senha);
		((Stub)ws).setHeader(soapLogin);
	
   java.lang.String listarTemplatesDisponiveis13mtemp = sampleWsCopiaSoapProxyid.listarTemplatesDisponiveis();
Agradeço antecipadamente.

6 Respostas

Alexandre_Saudate
Régis Steigleder:
Pessoal. Procurei no fórum e não encontrei nada para me ajudar. Não sei também se estou no subfórum correto. Mas a questão é que preciso acessar o WS da CTF. Criei via wizard do Eclipse as classes para acessar. Porém o WS da CTF necessita de um header com login e senha. O wizard do Eclipse não criou isso. Então fiquei "estonado" porque apesar de conhecer alguma coisa sobre WS ( já fiz um e fiz varios clientes para WS .net, php etc.. ) nunca usei o header. Alguem já passou por isso e pode dar uma dica de como colocar tags no header nas classes geradas pelo Eclipse? As tentativas que fiz usando SOAPHeaderElement não funcionaram. Olhem o que já fiz:
WsCopiaSoap ws = sampleWsCopiaSoapProxyid.getWsCopiaSoap();
		SOAPHeaderElement soapLogin = new SOAPHeaderElement("http://tempuri.org/", "SoapLogin");
		SOAPHeaderElement login = new SOAPHeaderElement("http://tempuri.org/","login");
  login.addTextNode("usuariodologin");
		SOAPHeaderElement senha = new SOAPHeaderElement("http://tempuri.org/", "senha");
		senha.addTextNode("senhasecreta");
		soapLogin.addChild(login);
		soapLogin.addChild(senha);
		((Stub)ws).setHeader(soapLogin);
	
   java.lang.String listarTemplatesDisponiveis13mtemp = sampleWsCopiaSoapProxyid.listarTemplatesDisponiveis();
Agradeço antecipadamente.

Em geral, eu prefiro colocar headers dentro de uma estrutura chamada HandlerChain (todo cliente JAX-WS tem isso). Já deu uma olhada, sabe qual é a idéia?

[]'s

R

Alexandre, não conheço isso.
Mas obrigado pela dica vou procurar material de estudo sobre Handler Chain.
Posto mais tarde minhas descobertas.

R

Bah! Tô completamente perdido nessa!
Não sei por onde.
O problema acho é que não sei como que funciona a coisa.
Eu sempre pedi pro Eclipse fazer pra mim.
Então não sei como que as classes geradas funcionam.
Sempre usei como “caixa preta”.
E uso a versão 1 do wizard.
:cry:

R

Como gosto de uma boa briga, segui em frente.

segue o código que fez a bagaça funcionar:
WsCopiaSoap ws = sampleWsCopiaSoapProxyid.getWsCopiaSoap();
        
		SOAPHeaderElement soapLogin = new SOAPHeaderElement("http://tempuri.org/", "SoapLogin");
		soapLogin.setMustUnderstand(false);
		SOAPElement login = soapLogin.addChildElement("login");
		login.setValue("usuario");
		SOAPElement senha = soapLogin.addChildElement("senha");
		senha.setValue("senhasecreta");
		((Stub)ws).setHeader(soapLogin);
       // dai basta chamar o método
Alexandre_Saudate
Régis Steigleder:
Como gosto de uma boa briga, segui em frente. segue o código que fez a bagaça funcionar:
WsCopiaSoap ws = sampleWsCopiaSoapProxyid.getWsCopiaSoap();
        
		SOAPHeaderElement soapLogin = new SOAPHeaderElement("http://tempuri.org/", "SoapLogin");
		soapLogin.setMustUnderstand(false);
		SOAPElement login = soapLogin.addChildElement("login");
		login.setValue("usuario");
		SOAPElement senha = soapLogin.addChildElement("senha");
		senha.setValue("senhasecreta");
		((Stub)ws).setHeader(soapLogin);
       // dai basta chamar o método

Código Axis2?

R

Não. Não é Axis2.

Criado 4 de dezembro de 2012
Ultima resposta 5 de dez. de 2012
Respostas 6
Participantes 2