2016-04-04 19 views
1

私はいくつかのjacksonアノテートされたクラスを返すテストhttpサーバを持っていて、1つのメソッドは生の文字列を返します。 ジャクソン注釈付きクラスはjsonストリングにうまくシリアル化されますが、getUserName()によって返されるストリングはjsonシリアライズされません。 私が使用しているRetrofitクライアントは、getUserName()メソッドによって返された文字列がjsonのシリアル化になると予想し、逆シリアル化中に例外をスローします。 このメソッドから返された文字列を逆シリアル化しないように、retrofitに通知するために使用できる注釈がありますか?改造HTTPクライアントを使用して文字列を読み取る

=====テストHTTPサーバ=====

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

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

    ......... 
} 

=====テストHttpクライアント.addConverterFactoryを使用してレトロフィット=====

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

.addConverterFactory(ScalarsConverterFactory.create())をRetrofitに追加しようとしましたが、それでも問題はありませんでした。 –

+0

詳細についてはこちらをご覧ください:https://github.com/square/retrofit/issues/1151 –

答えて

2

を使用して( ScalarsConverterFactory.create())が役に立ちました。 私は前にconverter-scalarsアーティファクトの間違ったバージョンを使用していました。

関連する問題