Чтение строк с использованием модифицированного http-клиента

У меня есть тестовый http-сервер, который возвращает некоторые аннотированные классы Джексона, а один метод возвращает необработанную строку. Аннотированные классы Джексона хорошо сериализуются в строки json, но строка, возвращаемая getUserName(), не сериализуется json. Клиент модернизации, который я использую, ожидает, что строка, возвращаемая методом getUserName(), будет сериализована json, и выдает исключение во время десериализации. Есть ли какая-то аннотация, которую я могу использовать, чтобы сообщить модификациям, чтобы они не десериализовали строку, возвращаемую этим методом.

===== Тестовый HTTP-сервер =====

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

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

    .........
}

===== Протестируйте Http-клиент с помощью 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();
        }
    }
}

person Rishi Kesh Dwivedi    schedule 04.04.2016    source источник
comment
Пробовал также добавить .addConverterFactory(ScalarsConverterFactory.create()) в Retrofit, но это тоже не помогло.   -  person Rishi Kesh Dwivedi    schedule 04.04.2016
comment
Более подробное обсуждение найдено здесь: github.com/square/retrofit/issues/1151   -  person Rishi Kesh Dwivedi    schedule 04.04.2016


Ответы (1)


Использование .addConverterFactory(ScalarsConverterFactory.create()) помогло. Раньше я использовал неправильную версию артефакта конвертера-скаляров.

person Rishi Kesh Dwivedi    schedule 04.04.2016