Bonjour à tous,

Je développe une classe à l'aide de DotCMIS, fournit par Apache pour permettre la connexion à une GED (Alfresco / Sharepoint 2013) pour envoyer ou récupérer des documents.

Pour le moment, j'arrive à créer des répertoires, envoyer des documents et mettre à jour les documents.

Mon problème, c'est que je n'arrive pas à récupérer mes documents.

D’après les tutos que j'ai pu trouver sur le NET, la méthode pour récupérer un document dans un répertoire serait la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
string repertoireCmis = "/Dossier de test";
// Récupération de l'identifiant du répertoire
string idFolder = session.GetObjectByPath(repertoireCmis).Id;
 
ICmisObject cmisobj = session.GetObject((session.CreateObjectId(idFolder)));
IFolder rep = (IFolder)cmisobj;
 
IEnumerable<ICmisObject> liste = rep.GetChildren();
 
// Puis on parcourt la liste
 
foreach (var fichier in liste)
{
	try
	{
		IDocument iDocument = (IDocument)fichier;
		IContentStream iContentStream = iDocument.GetContentStream();
		IProperty description = iDocument["cmis:description"];
 
		if (iContentStream.Stream != null)
		{
			if (description.Value == null || !description.Value.ToString().Contains("--t"))
			{
				FileStream fileStream = File.OpenWrite(Path.Combine(DossierDestination, fichier.Name));
				System.IO.Stream stream = iContentStream.Stream;
				int position;
				byte[] Buffer = new byte[4096];
 
				do
				{
					position = stream.Read(Buffer, 0, 4096);
					fileStream.Write(Buffer, 0, position);
				} while (position != 0);
 
				stream.Close();
				fileStream.Close();
 
				Dictionary<string, object> proprietes = new Dictionary<string, object>();
				if (description.Value == null)
					proprietes["cmis:description"] = "--t";
				else
				{
					proprietes["cmis:description"] = description.Value.ToString() + " --t";
				}
 
				var objectCMISSource = fichier.UpdateProperties(proprietes);
 
				if (fichier.Id == objectCMISSource.Id)
				{
					objectCMISSource.Refresh();
				}
 
				resultat = true;
			}
		}
		else
		{
 
		}
	}
	catch (Exception ex)
	{
	}
}
Sauf qu'au moment de remplir ma liste avec rep.GetChildren(), j'ai une erreur : 401 UNAUTHORIZED.

À savoir que ce problème se produit uniquement lorsque je veux récupérer un document sur Sharepoint 2013. Le code ci-dessus fonctionne correctement sur Alfresco

En espérant que quelqu'un pourra me venir en aide

Cordialement

Frank