Java apachejackrabbitwebdav-PUT方法。
开始使用Jackrabbit 2.6.3和commons httpclient 3 我已经编写了一个简单的webDav客户端,用于将文件上载到服务器,并希望根据jackrabbit的独立服务器的默认存储库对其进行测试。我只是想把一个文件放在默认存储库中 我的httpclient连接,该方法开始缓冲我的文件。问题是,我似乎无法确定我应该将http方法指向哪个URL以正确地将其放入存储库。独立服务器正在以下服务器上运行:Java apachejackrabbitwebdav-PUT方法。,java,apache,webdav,jackrabbit,Java,Apache,Webdav,Jackrabbit,开始使用Jackrabbit 2.6.3和commons httpclient 3 我已经编写了一个简单的webDav客户端,用于将文件上载到服务器,并希望根据jackrabbit的独立服务器的默认存储库对其进行测试。我只是想把一个文件放在默认存储库中 我的httpclient连接,该方法开始缓冲我的文件。问题是,我似乎无法确定我应该将http方法指向哪个URL以正确地将其放入存储库。独立服务器正在以下服务器上运行: http://localhost:8080. 对于我尝试过的所有URL,我似
http://localhost:8080.
对于我尝试过的所有URL,我似乎要么得到不支持的405 PUT,要么得到404或403,或者更奇怪的“repository'/'不是以'/default'开头。如果我将浏览器指向:
http://localhost:8080/repository/default/
简单地说,我的问题是,用PutMethod做这件事的url是什么?听起来很简单
我已经为我编写的类包括了一些截断代码,特别是我目前正在使用的方法,我认为这应该足以证明我的方法是正确的
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();
}
}
我相信这是一个简单的答案,但是浏览文档似乎没有显示任何与此相关的资源或教程。任何帮助都非常感谢。非常愚蠢,完全认为请求实体会发送一些文件数据并将其用作文件名,而我必须自己指定。PROTIP:离开计算机5-10分钟分钟。对于其他有我问题的人,应该是“yourUrl/repository/default”+fileName。简单