Я использую RemoteConverter
из веб-приложения jBoss на автономный сервер, созданный как server-standalone
по умолчанию, включенный в проект document4j.
Внутри jboss у меня есть старая версия необходимых библиотек httpclient-4.0.1.jar
и связанных с ними httpcore-4.0.1.jar
, поэтому я сталкиваюсь с большим количеством ClassDefNotFoundException
, вызванных другой версией jar, загруженной JVM.
Существует определенная проблема с объектом HttpClientConnectionManager
, который еще не доступен в версии.
Чтобы избежать этой проблемы, я хотел бы создать собственный http-клиент для standalone-server
, потому что из-за предыдущих проблем я не могу использовать Jersey
.
Кто-нибудь создал другой клиент для этого standalone-server
? Каковы спецификации для создания собственного RemoteClient
?
ОБНОВЛЕНИЕ 1
После небольшого анализа с помощью сниффинга я выяснил состав сообщения, поэтому я только что закончил пользовательский HttpClient
для этого сервера следующим образом:
File wordFile = new File("C:/temp/test.docx");
InputStream targetStream = new FileInputStream(wordFile);
URL url = new URL("http://localhost:9998");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/vnd.com.documents4j.any-msword");
conn.setRequestProperty("Accept", "application/pdf");
conn.setRequestProperty("Converter-Job-Priority", "1000");
OutputStream os = conn.getOutputStream();
os.write(IOUtils.toByteArray(targetStream));
os.flush();
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
FileWriter ostream = new FileWriter("C:/temp/test.pdf");
BufferedWriter out = new BufferedWriter(ostream);
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
out.write(output+"\n");
}
br.close();
out.close();
os.close();
conn.disconnect();
Теперь у меня другая проблема, если я пытаюсь открыть только что созданный файл test.pdf, он весь белый, но с правильным количеством страниц. Если я открою файл в текстовом редакторе и проанализирую начало и конец файла, я найду следующие символы:
%PDF-1.5
%µµµµ
1 0 obj
[...]
startxref
1484122
%%EOF
Кажется, это хороший PDF-файл.
Есть ли что-то еще, что можно сделать с этим файлом, полученным с REST-сервера?