"retrofit.RetrofitError: 404 Not Found" em app ao consultar webservice

4 respostas
E

Pessoal,

Estou construindo uma app android se comunicando com um webservice usando retrofit retorna o erro abaixo:

04-23 14:53:19.451 2505-2523/com.restul.teste W/art: Suspending all threads took: 5.788ms

04-23 14:53:19.978 2505-2505/com.restul.teste W/System.err: retrofit.RetrofitError: 404 Not Found

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:388)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at retrofit.Platform$Android$2$1.run(Platform.java:142)

04-23 14:53:19.986 2505-2505/com.restul.teste W/System.err:     at java.lang.Thread.run(Thread.java:818)

Eu acesso o a url do webservice normalmente no navegador, retornando os dados corretamente. Alguém já passou por isso? Alguma sugestão?

4 Respostas

clicnet

Em que momento esse erro aparece, quando você executa o projeto?
Você colocou as dependências necessárias para rodar o retrofit?

Leonardo_Dias

Fala Emanoel,

Você deve estar montando a URL de forma incorreta, uma informação muito importante quando se trabalha com retrofit é que:

Quando você define a URL do webservice, ela não deve terminar com /, ficando dessa forma:

RestAdapter adapter = new RestAdapter.Builder().setEndpoint("http://www.api.com.br/api")

E o restante da URL quando você cria o request, deve iniciar com /, ficando dessa forma:

@GET("/v1/user/login")
void checkLogin(Callback<CheckLoginResultVO> callback);

Se não adiantar, é melhor você colocar um breakpoint na falha, e ver como a URL do request está ficando.

Abraços.

E

Sim, qdo vou para a activity que vai usar o webservice.
coloquei o seguinte no gradle:
compile 'com.google.code.gson:gson:2.6.2’
compile 'com.squareup.retrofit:retrofit:1.9.0’
compile ‘com.squareup.okhttp:okhttp:2.5.0’

E

Faço o seguinte:

String url = “http://192.168.0.22:8080/servicows/restful”;

RestAdapter restadapter = new RestAdapter.Builder()

.setClient(new OkClient(new OkHttpClient()))

.setConverter(new GsonConverter(gson))

.setEndpoint(url).build();

restInterface = restadapter.create(RestInterface.class);
Na minha classe RestInterface tenho o método

<a class="mention" href="/u/get">@GET</a>("/postos/buscarpostos/json")

void getPostoSaudeJSON(Callback callback);
Na Activity faço o seguinte:

restInterface.getPostoSaudeJSON(new Callback() {

<a class="mention" href="/u/override">@Override</a>

public void success(PostoResponse postoResponse, Response response) {

List postos =  postoResponse.getListaPosto();

}
@Override
public void failure(RetrofitError error) {
    error.printStackTrace();
    error.getResponse();
}

});

E ai aparece o erro retrofit.RetrofitError: 404 Not Found…
Detalhe que acesso a url http://192.168.0.22:8080/servicows/restful/postos/buscarpostos no navegador e a resposta vem normalmente.

Criado 23 de abril de 2016
Ultima resposta 25 de abr. de 2016
Respostas 4
Participantes 3