#java #rest #jersey #multipart #jersey-client
#java #остальное #джерси #составная часть #джерси-клиент
Вопрос:
Извините за неуклюжее название вопроса, но это абсолютно абсурдная ситуация.
Я использую клиент Джерси для получения данных со стороннего сервера. На моей стороне я жду составных / смешанных данных, и в большинстве случаев это работает. Но иногда сервер отвечает данными application / octet-stream, и объект этого ответа является… составной / смешанный пакет, который я жду.
Content-Type: multipart/mixed; boundary="XXXXXXX"
--XXXXXXX
Content-Type: image/gif
datadatadata
Итак, мне нужно создать ответ клиента Джерси из этого объекта.
Я пытался сделать это с помощью ReaderInterceptor
public class MMSLargeAttachmentHandlerFix implements ReaderInterceptor {
@Override
public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException, WebApplicationException {
MultivaluedMap<String, String> m = context.getHeaders();
fixISAndHeaders(context);
return context.proceed();
}
private void fixISAndHeaders(ReaderInterceptorContext context) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(context.getInputStream(), "ISO-8859-1"));
context.getHeaders().putSingle("Content-Type", br.readLine());
br.readLine();
context.setInputStream(new ReaderInputStream(br, "ISO-8859-1"));
}
}
Но когда я пытаюсь прочитать объект, я получаю исключение с причиной «отсутствует начальная граница». Похоже, я что-то упускаю в своем подходе.