我正在使用RemoteConverter
从 jBoss Web 应用程序到作为默认server-standalone
包含在文档 4j 项目中的独立服务器。
在 jboss 内部,我有一个旧版本的所需库httpclient-4.0.1.jar
和相关库,httpcore-4.0.1.jar
所以我面临很多ClassDefNotFoundException
由 JVM 加载的不同版本的 jar 引起的问题。
对象存在特定问题,HttpClientConnectionManager
版本中尚不可用
为了避免这个问题,我想为 .bluild 自定义 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 服务器接收的文件还有其他关系吗?