2016-04-04 10 views
1

Ich habe einen Test http-Server, der einige jackson kommentierte Klassen zurückgibt und eine Methode gibt rohe Zeichenfolge zurück. Jackson Annotated-Klassen sind gut in JSON-Strings serialisiert, aber String, der von getUserName() zurückgegeben wird, ist nicht json serialisiert. Nachrüst-Client, den ich verwende, erwartet, dass die von der getUserName() -Methode zurückgegebene Zeichenfolge json serialisiert wird und während der Deserialisierung eine Ausnahme auslöst. Gibt es eine Anmerkung, die ich verwenden kann, um Retrofit anzuweisen, die von dieser Methode zurückgegebene Zeichenfolge nicht zu deserialisieren.Lesen von Strings mit Retrofit HTTP-Client

=====-Test Http Server =====

@Path("v1/testserver") 
public class TestServer { 

    @GET 
    @Path("username") 
    public String getUserName() { 
     return "Dummy user name"; 
    } 

    ......... 
} 

===== Test-Http-Client Retrofit =====

public interface RetrofitTestService { 
    @GET("username") 
    Call<String> getUserName(); 
} 

public class TestClient { 

    public static void main(String[] args) { 
     Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("http://localhost:8080/v1/testserver/") 
      .addConverterFactory(JacksonConverterFactory.create()) 
      .build(); 

     RetrofitTestService service = retrofit.create(RetrofitTestService.class); 

     Call<String> userName = service.getUserName(); 
     try { 
      System.out.printf("UserName: " + userName.execute().body()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Versucht, hinzuzufügen .addConverterFactory (ScalarsConverterFactory.create()) zu Retrofit als auch, aber das hat auch nicht geholfen. –

+0

Weitere Diskussion finden Sie hier: https://github.com/square/retrofit/issues/1151 –

Antwort

2

Mit .addConverterFactory (ScalarsConverterFactory.create()) hat geholfen. Ich verwendete vorher eine falsche Version des Konverter-Skalar-Artefakts.