Depois de recebermos a resposta do servidor, tanto o okHttp quanto o Retrofit só podem receber dados do tipo String. No desenvolvimento real, muitas vezes precisamos analisar a string e convertê-la em um objeto Java Bean. Por exemplo, se os dados de resposta do servidor forem uma string no formato JSON, podemos usar a biblioteca GSON para concluir a operação de desserialização. E o Retrofit fornece vários conversores para que a resposta possa concluir a conversão automática de dados. O exemplo a seguir usa a análise json.
adicionar dependência do conversor
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
Passo 1: Obtenha o Java Bean e gere a classe de entidade
Entre na plataforma aberta da API wanandroid https://www.wanandroid.com/blog/show/2, use a interface de login dentro como
https://www.wanandroid.com/user/login Método: POST Parâmetros: nome de usuário, senha
Use o Postman para visualizar o resultado da solicitação desta interface:
Entre na ferramenta de formatação de verificação JSON online (Be JSON) , selecione json para gerar a classe de entidade java, cole o resultado retornado e, em seguida, altere o nome da classe para BaseResponse e Package é o nome do seu pacote
Baixe o código e copie o arquivo baixado para o diretório do projeto
Gere o método toString no código (ambos são obrigatórios) clique em alt+insert e depois clique em toString()
Etapa 2: criar uma interface Java baseada na interface Http
package com.example.networkdemo;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface WanAndroidService {
@POST("user/login")
@FormUrlEncoded
Call<BaseResponse> login(@Field("username") String username, @Field("password") String pwd);
}
Passo 3: Use o conversor, BaseResponse recebe o valor de retorno
package com.example.networkdemo;
import org.junit.Test;
import java.io.IOException;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitTest {
//使用转换器
Retrofit retrofit2=new Retrofit
.Builder()
.baseUrl("https://www.wanandroid.com/")
.addConverterFactory(GsonConverterFactory.create())//添加转换器
.build();
WanAndroidService wanAndroidService=retrofit2.create(WanAndroidService.class);
@Test
public void loginConvertTest() throws IOException {
//登录
Call<BaseResponse> call = wanAndroidService.login("dll", "dl666666");
//发送请求将数据转换成java对象
Response<BaseResponse> response = call.execute();
BaseResponse baseResponse = response.body();
System.out.println(baseResponse);
}
}
resultado da operação:
O conversor completa a conversão automática