2016-11-17 2 views
4

Retrofit-Dokumentation sagt:Unable Konverter für Klasse com.squareup.okhttp.ResponseBody erstellen

„standardmäßig Retrofit nur HTTP-Körper in OkHttp des Response deserialisieren kann ... kann Konverter hinzugefügt werden, um andere Arten zu unterstützen "

Das bedeutet, ich sollte in der Lage sein, einen API-Aufruf WIHTOUT mit dem GSON-Konverter, und bekomme meine Antwort in Form eines" ResponseBody "-Objekts.

aber ich bekomme immer noch Fehler

java.lang.IllegalArgumentException: Unable to create converter for class com.squareup.okhttp.ResponseBody 

hier ist mein Code

@GET("v1/search") 
    Call<ResponseBody> getArtists(@Query("q") String name, @Query("type") String searchType); 
    Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl("https://api.spotify.com/") 
        .build(); 

    api = retrofit.create(SpotifyApi.class); 

    api.getArtists(searchBox.getText().toString(), "artist") 
          .enqueue(new Callback<ResponseBody>() { 
           @Override 
           public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 

           } 

           @Override 
           public void onFailure(Call<ResponseBody> call, Throwable t) { 

           } 
          }); 

Grundsätzlich für die ich in seiner reinsten/einfachsten Form zu verwenden Retrofit in der Lage sein wollen, und erhalten nur eine grundlegende/raw Antwort zurück. Dies ist nicht für eine echte App, es ist für Experimente.

Antwort

3

Sie müssen okhttp3.ResponseBody von OkHttp 3.x verwenden (von dem Retrofit abhängt). Diese Fehlermeldung zeigt an, dass Sie den Typ aus OkHttp 2.x verwenden.

+0

omg du bist erstaunlich! Ich würde es wirklich schätzen, wenn du erklärst, wie du das herausgefunden hast – Siavash

+3

Ich schrieb Retrofit 2 und trage zu OkHttp 3 bei :) –

+0

Yeah, ich habe das sofort herausgefunden, nachdem ich das geschrieben habe, vielen Dank, ihr seid die Besten! – Siavash