Galera,
fiz um exemplo de um cliente Java que consome um serviço .asmx.Tudo
parece funcionar bem,mas o retorno da chamada está sendo sempre
‘false’,mesmo quando deveria retornar ‘true’.Alguém sabe dizer se
estou esquecendo algo?
Segue o código:
// Endereço, local onde encontra-se o Web ServiceStringlocal="http://ip/sistemasweb/autenticintranet/autenticintranet.asmx";// Criando e configurando o serviçoCallcall=(Call)newService().createCall();call.setProperty(Call.SOAPACTION_USE_PROPERTY,newBoolean(true));call.setProperty(Call.SOAPACTION_URI_PROPERTY,"http://intranet/Logar");// Configurando o endereço.call.setTargetEndpointAddress(local);// Marcando o método a ser chamado.call.setOperationName("Logar");// Parâmetros da função Logar.Object[]param=newObject[]{"user","senha"};// Retorno da FunçãoStringret=(String)call.invoke(param);// Imprime o resultadoSystem.out.println("Resultado: "+ret);
Se vc tiver gerado as classes do cliente usando o plugin do eclipse, ele te gera uma porção de classes, e vc passa a trabalhar com elas,pois elas sao o meio para invocar seu serviço, espero nao esta falando besteira, mas acho que é isso, posta as classes geradas pra eu dar uma olhada, pra ver a estrutura se ta igual aos meus aqui…
Vlw!
R
raf4ever
Olá Léo,não gerei essas classes,elas são mesmo necessárias?Implementei um serviço em Java e usei esse mesmo cliente e funcionou blz.
L
Leo22
Olá Rafael,
se sao necessarias ou nao, nao sei te dizer ao certo,mas sempre que vou consumir um serviço, que é o seu caso ne, eu gero essas classes, pois elas sao as classes de proxy, que sao usadas para enviar uma mensagem para o servico em questao…
Agora, se vc disse que deu certo consumir um o servico, entao nao sei…
da algum erro nesse outro caso no log?
R
raf4ever
Leo22:
Olá Rafael,
se sao necessarias ou nao, nao sei te dizer ao certo,mas sempre que vou consumir um serviço, que é o seu caso ne, eu gero essas classes, pois elas sao as classes de proxy, que sao usadas para enviar uma mensagem para o servico em questao…
Agora, se vc disse que deu certo consumir um o servico, entao nao sei…
da algum erro nesse outro caso no log?
Não,apenas a consulta que deveria retornar ‘true’(já testei na mão) tá retornando ‘false’.
L
Leo22
eu no seu lugar, geraria as classes, e passava a trabalhar com elas, ate pq evitaria de fazer isso que vc faz ai, pq as classes geradas ja fazem isso pra vc…
pq ai vc no cliente so faria algo do tipo.
AlgumaCoisaStub stub = new AlgumaCoisaStub();
// seta alguma informação de header que vc precise, nao obrigatorio.
AlgumaCoisaResult result = stub.seuServico();
return result.get_any()[0].getAsString();
e no mundo perfeito isso vai funcionar
R
raf4ever
Usei o wsdl2Java pra gerar as classe,e tenho esse metodo logar que recebe usuário e senha e devolve um boolean
publicstaticvoidmain(String[]args)throwsRemoteException{try{AutenticIntranetSoap12Stubx=newAutenticIntranetSoap12Stub();System.out.println(x.logar("usuario","senha"));}catch(AxisFaulte){// TODO Auto-generated catch blocke.printStackTrace();}
Mas estou recebendo esse erro:
faultDetail:
{http://xml.apache.org/axis/}exceptionName:org.apache.axis.NoEndPointException
{http://xml.apache.org/axis/}stackTrace:No endpoint
at intranet.AutenticIntranetSoap12Stub.logar(AutenticIntranetSoap12Stub.java:286)
at intranet.Cliente.main(Cliente.java:12)
{http://xml.apache.org/axis/}hostname:nds01
No endpoint
at intranet.AutenticIntranetSoap12Stub.logar(AutenticIntranetSoap12Stub.java:286)
at intranet.Cliente.main(Cliente.java:12)
R
raf4ever
O stub tem o construtor(URL endpoint,Service service),mas não estou entendendo como devo passar esse objeto Service.
L
Leo22
verifica na tuas classes se tem uma classe "AlgumaCoisaLocator, dentro dela tem um metodo getAutenticIntranetSoap ou algo do tipo
ai vc faz:
// nao sei se ta correto o nome das classes.AutenticIntranetSoap12Stubstub(AutenticIntranetSoap12Stub)=seulocator.getAutenticIntranetSoap();stub.seumetodo();
se vc prestar atenção no seu codigo, vc vai ver que esse metodo getAutenticIntranetSoap() ele cria um endpoint.