开始使用Jackrabbit 2.6.3和commons httpclient 3.
我编写了一个简单的webDav客户端来将文件上传到服务器,并希望根据jackrabbit的独立服务器的默认存储库进行测试。我只想将文件放在默认存储库中。
我的httpclient连接,该方法开始缓冲我的文件。麻烦的是,我似乎无法工作什么URL我应该指向我的http方法,以正确地将它放在存储库中。独立服务器正在运行:
http://localhost:8080.
我似乎要么不支持405 PUT,要么得到404或403,或者对于我尝试过的所有网址,更加好奇的“存储库”/'不以'/ default'开头。我可以看到默认存储库如果我将浏览器指向以下内容:
http://localhost:8080/repository/default/
简单来说,我的问题是,使用PutMethod做什么的网址是什么?听起来很简陋。
我已经为我编写的类包含了一些截断的代码,特别是我目前使用的方法,我认为应该足以证明我的方法是正确的。
public void insertFile(byte[] content, String id) throws Exception {
PutMethod httpMethod = new PutMethod("http://localhost:8080/repository/default/");
InputStream is = new ByteArrayInputStream(content);
FileMetaData meta = new FileMetaData();
meta.address = destUri;
meta.id = id;
meta.mimeType = Files.probeContentType(Paths.get(meta.address));
RequestEntity requestEntity = new InputStreamRequestEntity(is, meta.mimeType);
httpMethod.setRequestEntity(requestEntity);
try {
int statusCode = client.executeMethod(httpMethod);
if (statusCode != HttpStatus.SC_OK) System.err.println("Method failed: " + httpMethod.getStatusLine());
byte[] responseBody = httpMethod.getResponseBody();
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
httpMethod.releaseConnection();
}
}
我确信这是一个简单的答案,但是搜索文档似乎没有显示任何与此相关的资源或教程。任何帮助赞赏。
答案 0 :(得分:0)
真的很傻,完全以为requestEntity会在文件上发送一些数据并将其用作文件名,而是我必须自己指定。 PROTIP:离开电脑5到10分钟。对于我的问题的任何其他人,它应该是'“yourUrl / repository / default”+ fileName'。简单。