Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Retrofit passar um valor ao json e retornar vários

Por exemplo passo um id e me retornar nome, email e telefone via retrofit

3 respostas

Oi Raphael, tudo bem?

Poderia me passar um exemplo? Pois o Retrofit permite realizar qualquer tipo de requisição que estamos acostumados a fazer via HTTP.

No exemplo tenta ser mais específico, por exemplo, uma request GET que vai mandar o valor do id via path/header/body e vai retornar os valores em JSON...

Abraços.

Por exemplo passo o email do usuário e me retorna Nome, telefone, idade, sexo do usuário que está em php com mysql e eu retorno com json via php

solução!

Oi Raphael, da pra fazer de várias formas.

A mais trivial possível, seria você criar o service e a call que vão representar essa sua requisição. Então basta apenas você definir o verbo HTTP e enviar o valor que deseja.

A sacada das requisições via Retrofit fica em saber o valor que você quer passar e o retorno que você espera.

Quando queremos passar um valor, podemos enviá-lo como corpo (body), cabeçalho (header) ou caminho da URL (path).

No retorno, temos diversas formas uma delas seria você esperar uma String e fazer uma conversão para algum objeto. Ou então, você já pode esperar a classe que representa o objeto que será devolvido.

Vou fazer um exemplo de como poderia realizar uma requisição na qual atende o que você precisa. Primeiro precisaria ter a classe modelo, nesse caso a classe Usuario:

public class Usuario {
    private String email;
    private String nome;
    private String telefone;
    private int idade;

    //outros atributos junto com seus getters e setters
}

Em seguida, você criaria o service junto com a Call que já espera um Usuairo:

public interface UsuarioService {
    public Call<Usuario> busca(String email);
}

Então agora o que precisa é só definir o verbo, junto com os parâmetros que serão enviados. Vou fazer o exemplo de uma requisição GET enviando o email via path:

public interface UsuarioService {
    @GET(usuario/{email})
    public Call<Usuario> busca(@Path("email") String email);
}

Pronto, agora a única coisa que precisa é executar essa call via execute ou enqueue. Recomendo sempre considerar o enqueue justamente porque ele funciona de forma assíncrona, portanto, não bloqueia a Thread principal.

Abraços.