2013-10-24 2 views
0

начинает работать с Jackrabbit 2.6.3 и общемирового HTTPClient 3.Apache Jackrabbit webDAV PUT Method.

Я написал простой клиент Webdav, чтобы загрузить файл на сервер и хочу проверить его на хранилище по умолчанию автономного сервера Jackrabbit в. Просто я просто хочу поместить файл в репозиторий по умолчанию.

мой httpclient подключается, и метод начинает буферизацию моего файла. Проблема в том, что я не могу работать над тем, какой URL должен указывать мой метод http, чтобы правильно поместить его в репозиторий. Автономный сервер работает на:

http://localhost:8080. 

Я, кажется, либо получить 405 PUT не поддерживается или 404 или 403 или еще более любопытным «хранилище„/“не начинается с„/ по умолчанию“для всех URL-адресов . Я попытался я могу видеть содержимое репозитория по умолчанию, если я указываю мой браузер по адресу:.

http://localhost:8080/repository/default/ 

Просто, на мой вопрос, что такое URL, чтобы сделать это с 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

Действительно глупо, полностью подумал, что requestEntity отправит некоторые данные в файл и будет использовать это как имя файла, вместо этого я должен указать это сам. ПРОТИВО: Отстаньте от компьютера в течение 5 - 10 минут. Для кого-либо еще с моей проблемой это должно быть «yourUrl/repository/default» + имя_файла. Легко.