Tenho recebido uma mensagem de erro de conexão com o servidor "http://192.168.174.1:8080/api/", seria esse ip mesmo ?
Mensagem de erro:
2019-03-12 21:35:33.972 8072-8072/br.com.alura.agenda E/token falhou: connect timed out
Tenho recebido uma mensagem de erro de conexão com o servidor "http://192.168.174.1:8080/api/", seria esse ip mesmo ?
Mensagem de erro:
2019-03-12 21:35:33.972 8072-8072/br.com.alura.agenda E/token falhou: connect timed out
Oi Pabro, tudo bem?
O pelo o que erro indica, você não está acessando o endereço certo.
Sobre sua dúvida se esse é o endereço correto, você precisa verificar o endereço IP do seu computador por meio dos programas disponíveis pelos sistemas operacionais:
ipconfig
ifconfig
Assim que obter o ip faça o teste pegando e a porta e tentando acessar via navegador. Caso funcione, teste o mesmo endereço no navegador do celular.
Se não funcionar, talvez o dispositivo e o computador não estão na mesma rede, aí vai precisar configurá-los para que fiquem na mesma rede.
[]s
Grande professor Alex, primeiramente muito obrigado por me responder.
Então eu achei que esse ip que eu comentei no tópico era referente algum serviço externo, mas na realidade esse endpoint é disponibilizado no server correto ?
Bom eu inicializo o server e até tento fazer uma chamada na URI "192.168.0.xxx/api" porem estou recebendo o seguinte erro:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Mar 14 21:12:36 BRT 2019
There was an unexpected error (type=Not Found, status=404).
No message available
A minha duvida é onde realmente esse serviço está disponível.
Um abraço...
Obrigado pelo elogio, estamos aqui para ajudá-lo no que precisar o/
Sim, o endereço IP é do computador que executou o servidor, por isso precisa modificá-lo.
Sobre o erro é pelo fato de que o end point que está acessando (192.168.0.xxx/api
) não foi mapeado pelo servidor, tente por exemplo a variação 192.168.0.x:y/api/aluno
que devolve a lista de alunos.
[]s
Professor Alex, muito obrigado por ter me respondido e desculpe a demora por voltar aqui, sabe como é essa vida de DEV esta tudo sempre atrasado e fora do prazo kkkkkk.
Parabéns pelo conteúdo que você trabalha na Alura, eu fiz a formação Android na Caelum foi uma pena não ter tido aula com você, mas o seu conteúdo aqui esta nota mil, quem sabe um dia eu tenha a oportunidade de trabalhar com um profissional do seu nível, ficaria muito feliz.
Bom fiz o teste na seguinte uri "http://192.168.80.1:8080/api/aluno" no brownser eu tenho o retorno das listas com sucesso no formato de json, mas no app eu estou recebendo a seguinte exception:
03-19 00:08:39.146 15863-15863/br.com.alura.agenda E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.alura.agenda, PID: 15863
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.alura.agenda/br.com.alura.agenda.ListaAlunosActivity}: java.lang.IllegalArgumentException: baseUrl must end in /: http://192.168.80.1:8080/api/aluno
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalArgumentException: baseUrl must end in /: http://192.168.80.1:8080/api/aluno
at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:515)
at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:458)
at br.com.alura.agenda.retrofit.RetrofitInicializador.<init>(RetrofitInicializador.java:24)
at br.com.alura.agenda.ListaAlunosActivity.buscaAlunos(ListaAlunosActivity.java:118)
at br.com.alura.agenda.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:85)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Essa é minha classe inicializadora do retrofit:
public class RetrofitInicializador {
private final Retrofit retrofit;
public RetrofitInicializador(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.addInterceptor(interceptor);
this.retrofit = new Retrofit.Builder().baseUrl("http://192.168.80.1:8080/api/aluno")
.addConverterFactory(JacksonConverterFactory
.create())
.client(client.build())
.build();
}
public AlunoService getAlunoService() {
return retrofit.create(AlunoService.class);
}
public DispositivoService getDispositivoService() {
return retrofit.create(DispositivoService.class);
}
}
Estou achando muito estranho o fato de conseguir chamar o endpoint no brownser mas não consigo usar no meu app....
Você teria outra dica ?
Abs ....
Opa Pable, sem problemas! Tudo no seu tempo hehe
Fico muito feliz pelas suas palavras, muito obrigado mesmo :)
Esse erro é tranquilo a descrição é essa:
Caused by: java.lang.IllegalArgumentException: baseUrl must end in /: http://192.168.80.1:8080/api/aluno
Ou seja, falta uma /
no final da URI, basta apenas deixar a URL base da seguinte maneira:
this.retrofit = new Retrofit.Builder().baseUrl("http://192.168.80.1:8080/api/aluno/")
Um detalhe importante é que a recomendação para URL é configurar um endereço que sirva para outros end points da API, como é o caso do /aluno
ou /algumaOutraCoisa
, portanto, ao invés de http://192.168.80.1:8080/api/aluno/
deixe apenas http://192.168.80.1:8080/api/
, então você faz a modificação do restante no service do Retrofit quando configurar a requisição.
[]s
Fala Professor Alex, muito obrigado realmente era algo bem simples.