Bonjour,je dois réaliser un programme en java me permettant de downloader des fichier d'un repo alfresco.Pour cela je dispose de l'url de téléchargement (http://alfresco:8080/alfresco/d/a/workspace/SpacesStore/86d4cf1a-1c66-4628-a934-e7a759556aec/Alfresco_user_guide.odt) et d'un utilisateur admin (appelons le theadmin/thepassword)
package com.download;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
public class DownloadAlfrescoFile {
public static void main(String[] args) {
Credentials creds = new UsernamePasswordCredentials("theadmin", "thepassword");
HttpClient httpClient = new HttpClient();
//httpClient.getParams().setAuthenticationPreemptive(true);
httpClient.getState().setCredentials(
new AuthScope(AuthScope.ANY_HOST, 8080, AuthScope.ANY_REALM), creds);
GetMethod getMethod = new GetMethod(
"http://alfresco:8080/alfresco/d/a/workspace/SpacesStore/86d4cf1a-1c66-4628-a934-e7a759556aec/Alfresco_user_guide.odt");
getMethod.setDoAuthentication(true);
try {
// execute the GET
int status = httpClient.executeMethod(getMethod);
// print the status and response
System.out.println("get result:" + status);
InputStream instream = getMethod.getResponseBodyAsStream();
int l;
byte[] tmp = new byte[2048];
File tmpFile = new File("/tmp/Alfresco_user_guide.odt");
OutputStream os = new FileOutputStream(tmpFile);
while ((l = instream.read(tmp)) != -1) {
os.write(tmp, 0, l);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// release any connection resources used by the method
getMethod.releaseConnection();
}
}
}
ce code me renvoie le status 401 et un fichier vide.si je décommante la lignehttpClient.getParams().setAuthenticationPreemptive(true);
j'obtiens le status 200 mais le fichier contiens la page de login en HTML (et pas le document openoffice esconté)Pour info le repo alfresco est configuré avec des utilisateurs venant d'un LDAP/AD (pas de gestion native de user par alfresco)la tentative ne génère aucun log sur le server.Une idée ?