Erro ao consumir web service Rest

5 respostas
Thishinoda

Pessoal, estou tentando criar um web service Rest em um projeto EJB, mas não consigo consumi-lo. Estou tentando acessar por meio de uma aplicação Android, mas quando acesso recebo o erro “Not found”.
Estou em dúvida sobre qual a url correta a chamar, mas já tentei algumas variações e o erro é sempre o mesmo. Alguma ideia do que possa ser?

A classe do recurso está assim:

@Path("/testews")
public class PedidoResource {

	@GET
	@Produces(MediaType.APPLICATION_XML)
	@Consumes(MediaType.APPLICATION_XML)
	@Path("/testaracesso")
	public Response consultarPedido(@PathParam("idPedido") Integer idPedido) {
                // implementacao	
	}
}

Consumo do WS na aplicação Android:

public class TesteServices {
	
         public String testarAcesso() {

                String resultado = null;
		HttpGet get = new HttpGet("http://192.168.1.14:8081/testews/testaracesso");
		ResponseHandler<String> handler = new BasicResponseHandler();

		try {
			
			resultado = httpclient.execute(get, handler);

		} catch (Exception e) {
			resultado = e.getMessage();
		}

		return texto;
	}
}

5 Respostas

Andre_Fonseca
Thishinoda:
Pessoal, estou tentando criar um web service Rest em um projeto EJB, mas não consigo consumi-lo. Estou tentando acessar por meio de uma aplicação Android, mas quando acesso recebo o erro "Not found". Estou em dúvida sobre qual a url correta a chamar, mas já tentei algumas variações e o erro é sempre o mesmo. Alguma ideia do que possa ser? A classe do recurso está assim:
@Path("/testews")
public class PedidoResource {

	@GET
	@Produces(MediaType.APPLICATION_XML)
	@Consumes(MediaType.APPLICATION_XML)
	@Path("/testaracesso")
	public Response consultarPedido(@PathParam("idPedido") Integer idPedido) {
                // implementacao	
	}
}
Consumo do WS na aplicação Android:
public class TesteServices {
	
         public String testarAcesso() {

                String resultado = null;
		HttpGet get = new HttpGet("http://192.168.1.14:8081/testews/testaracesso");
		ResponseHandler<String> handler = new BasicResponseHandler();

		try {
			
			resultado = httpclient.execute(get, handler);

		} catch (Exception e) {
			resultado = e.getMessage();
		}

		return texto;
	}
}

Oi,

Tenta colocar o nome da aplicação onde está o serviço

http://192.168.1.14:8081/nome-da-aplicacao/testews/testaracesso

DaniloAndrade

Bom dia o método que vc ta disponibilizando no ws espera um parâmetro, mas vc esta chamando o ws sem passar parâmetro nenhum

http://192.168.1.14:8081/testews/testaracesso/{parametro deve ser passado}

talvez vc tenha que mudar o path do seu metodo pra ele esperar um parâmetro também

@Path("/testaracesso/{idPedido}")

antes de testar no android testa no browser da sua maquina
ex: coloca a url no seu navegador

http://192.168.1.14:8081/testews/testaracesso/1

se estiver tudo certo ele exibira o xml da resposta do seu método

acho que é isso, faz tempo que estudei rest e não lembro muito bem agora

DaniloAndrade

achei esse artigo da k19
http://www.k19.com.br/artigos/criando-um-webservice-restful-em-java/

acho que vai te ajudar

Thishinoda

Já tentei dessa forma também.
nome-da-aplicacao = nome do projeto, certo?

DaniloAndrade, não é o parâmetro, na verdade na era de copiar e colar o método aqui eu misturei os cabeçalhos dos métodos xD, o método que eu to testando inicialmente não tem parâmetros.

Com relação a esse artigo da K19, há uma configuração lá sobre o Jersey. Depois que postei minha dúvida eu vi esse artigo, mas acontece que como o meu projeto é um módulo EJB, sem configurações web, eu não tenho o arquivo web.xml.

Andre_Fonseca

Thishinoda:

Tenta colocar o nome da aplicação onde está o serviço

http://192.168.1.14:8081/nome-da-aplicacao/testews/testaracesso

Já tentei dessa forma também.
nome-da-aplicacao = nome do projeto, certo?

oi,

sim, voce precisa usar o nome do projeto ou o contexto da aplicação no servidor

já que está usando EJB tem uma forma mais fácil de você expor os métodos do EJB, para isso você só precisa usar as anotações @Webmethod e @Webservice (isso funciona no JEE6(

dá uma lida abaixo

Criado 10 de setembro de 2012
Ultima resposta 11 de set. de 2012
Respostas 5
Participantes 3