Grupo, bom dia
Conseguí fazer uma implementação com o Retrofit usando uma autenticação básica, ou seja, envio o usuário e senha, e consigo autenticar no webservice.
Entretanto, eu não consigo capturar o token que é retornado no json.
Eu seguí este tutorial
https://futurestud.io/tutorials/android-basic-authentication-with-retrofit
Segue abaixo o código que implementei.
ServiceGenerator.java
LoginService.java
Login.java
MainActivity.java
.
.
.
Em sábado, 1 de outubro de 2016 12:09:15 UTC-3, shido...@gmail.com escreveu:
-- Conseguí fazer uma implementação com o Retrofit usando uma autenticação básica, ou seja, envio o usuário e senha, e consigo autenticar no webservice.
Entretanto, eu não consigo capturar o token que é retornado no json.
Eu seguí este tutorial
https://futurestud.io/tutorials/android-basic-authentication-with-retrofit
Segue abaixo o código que implementei.
ServiceGenerator.java
public class ServiceGenerator {
public static final String API_BASE_URL = "https://NOME_APP.herokuapp.com/";
private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create());
public static <S> S createService(Class<S> serviceClass){
return createService(serviceClass, null, null );
}
public static <S> S createService(Class<S> serviceClass, String name, String password){
if(name != null && password != null){
String credentials = name + ":" + password;
final String basic = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.header("Authorization", basic)
.header("Accept", "application/json")
.method(original.method(), original.body());
Request request = requestBuilder.build();
return chain.proceed(request);
}
});
}
OkHttpClient client = httpClient.build();
Retrofit retrofit = builder.client(client).build();
return retrofit.create(serviceClass);
}
}
LoginService.java
public interface LoginService {
@POST("api/autenticar")
Call<Login> basicLogin();
}
Login.java
public class Login {
@SerializedName("name")
private String name;
@SerializedName("password")
private String password;
@SerializedName("token")
private String token;
public Login(String name, String password){
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
logarWebService();
} catch (IOException e) {
e.printStackTrace();
}
.
.
private void logarWebService() throws IOException {
LoginService loginService = ServiceGenerator.createService(LoginService.class, "appLoginWS", "appSenhaWS");
Call<Login> call = loginService.basicLogin();
call.enqueue(new Callback<Login>() {
@Override
public void onResponse(Call<Login> call, Response<Login> response) {
if(response.isSuccessful()){
Log.d(TAG, "responseOK");
}else{
Log.d(TAG, "responseNULL");
}
}
@Override
public void onFailure(Call<Login> call, Throwable t) {
}
});
Login login = call.execute().body();
}
Digite o código aqui..
Em sábado, 1 de outubro de 2016 12:09:15 UTC-3, shido...@gmail.com escreveu:
bom dia pessoal.
Estou com dificuldades em implementar uma funcionalidade de conexão do android com um seviço REST escrito no node.js.
O serviço do REST possui duas rotas
a) rota para fazer a autenticação e receber o token.
b) rota para que faz a consulta no banco de dados e retorna um json.
Bem, só conseguirei acessar a rota "b" se eu primeiramente efetuar o login e capturar o token.
Agora vamos lá para a parte android (onde estou tendo a maior dificuldade)
a) pesquisei diversos tutoriais e os mais simples, não explicam como efetuar a autenticação, ele já utilizam a rota de pesquisa e retorno de json sem a autenticação.
b) encontrei um forum que recomendou usar a API Retrofit, pois dizia que a implementação era simples. Entretanto ou observar a utilização dela, eu achei complexo.
Então pessoal, gostaria de saber a opnião de vocês qual é a melhor forma de implementar a conexão (com autenticação com ou sem o token) . E se for usar alguma API, qual é a usada pela comunidade Android.
Grato pela atenção de todos.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
0 comentários:
Postar um comentário