Transformatoren im Retrofit

Nachdem wir die Antwort vom Server erhalten haben, können sowohl okHttp als auch Retrofit nur Daten vom Typ String empfangen.In der tatsächlichen Entwicklung müssen wir häufig den String parsen und ihn in ein Java Bean-Objekt umwandeln. Wenn die Serverantwortdaten beispielsweise eine Zeichenfolge im JSON-Format sind, können wir die GSON-Bibliothek verwenden, um die Deserialisierung abzuschließen. Und Retrofit bietet mehrere Konverter, damit die Antwort die automatische Datenkonvertierung abschließen kann. Im Folgenden wird die json-Analyse als Beispiel verwendet.


Konverterabhängigkeit hinzufügen

implementation "com.squareup.retrofit2:converter-gson:2.9.0"


Schritt 1: Java Bean abrufen und Entitätsklasse generieren

Geben Sie die offene Plattform wanandroid API https://www.wanandroid.com/blog/show/2 ein, verwenden Sie die darin enthaltene Anmeldeschnittstelle als 

https://www.wanandroid.com/user/login Methode: POST Parameter: Benutzername, Passwort

Verwenden Sie Postman, um das Anforderungsergebnis dieser Schnittstelle anzuzeigen:


 

Geben Sie das Online-Formatierungstool für die JSON-Verifizierung (Be JSON) ein , wählen Sie json aus, um die Java-Entitätsklasse zu generieren, fügen Sie das zurückgegebene Ergebnis ein und ändern Sie dann den Namen der Klasse in BaseResponse, und Package ist Ihr Paketname 

Laden Sie den Code herunter und kopieren Sie die heruntergeladene Datei in das Projektverzeichnis

Generieren Sie die toString-Methode im Code (beide sind erforderlich), klicken Sie auf Alt+Einfügen und dann auf toString()

 

 


Schritt 2: Erstellen Sie eine Java-Schnittstelle basierend auf der Http-Schnittstelle

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);
}


Schritt 3: Verwenden Sie den Konverter, BaseResponse erhält den Rückgabewert

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);

    }


}


Operationsergebnis:

 Der Konverter schließt die automatische Konvertierung ab

Supongo que te gusta

Origin blog.csdn.net/weixin_53443677/article/details/126402113
Recomendado
Clasificación