Я пытаюсь опубликовать FileInputStream с помощью Дооснащаемого 1.9.x (я не могу перейти на 2.0.x еще)проводка FileInputStream с Retrofit 1.9.x
Я прочитал This Post.
В этом сообщении я понял, что если я использую TypedInput в своем интерфейсе и реализую оболочку класса TypedInput, которая обрабатывает поток, тогда он должен работать. Непонятно, был ли TypedInput vs TypedOutput ответом (TypedInput выглядел наиболее корректно, связанная документация по дооснащению не указывала, насколько я мог это сказать. Также все перемещено в 2.0)
Чтобы продолжить - я создал класс
private class InputStreamMunger implements TypedInput {
private InputStream is;
private String mimeType;
private Long fileLength;
public InputStreamMunger(InputStream is, String mimeType, Long fileLength) {
this.is = is;
this.fileLength = fileLength;
this.mimeType = mimeType;
}
@Override
public String mimeType() {
return mimeType;
}
@Override
public long length() {
return fileLength;
}
@Override
public InputStream in() throws IOException {
return is;
}
}
Мой Интерфейс:
@Multipart
@POST("/MrService/v1/upload/{accountId}")
Response upload(
@Path("accountId") String accountId,
@Part("file") TypedInput file);
Тогда я называю это
FileInputStream is = new FileInputStream("src/test/java/com/me/MrService/tester.txt");
InputStreamMunger file ;
try {
file = new InputStreamMunger(is, "text/plain", is.getChannel().size());
} catch (IOException e) {
e.printStackTrace();
return;
}
Response r = client.upload("12345", file);
Ошибки я получаю:
retrofit.RetrofitError: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class com.me.MrService.IntegrationTestIT$InputStreamMunger and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS))
Означает ли это, что мне нужно, чтобы создать свой собственный картографа для обработки Потока? Я надеюсь, что я просто делаю что-то неправильно и что мне не нужно прыгать через этот обруч.
Спасибо!