Bonjour,
je souhaite envoyer un fichier XML afin que mon serveur (localhost) crée une page grâce au XML.
Voici mon code :
Pour ceux qui se demande pourquoi je ne déclare pas "input_row...." c'est parce que j'utilise le logiciel d'ETL Talend et que c'est variable sont en fait celles que j'ai en entrée de mon composant.
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 HttpClient httpClient = new HttpClient(); HostConfiguration hostConfig=new HostConfiguration(); hostConfig.setHost("localhost", 8090); httpClient.setHostConfiguration(hostConfig); JAXBContext context = JAXBContext.newInstance("org.xwiki.rest.model.jaxb"); Marshaller marshaller = context.createMarshaller(); String titlemod=java.net.URLEncoder.encode(input_row.title); //encode le titre pour l'utiliser dans l'URL // Creation de l'objet Page pour l'article de blog Page page=new Page(); page.setSyntax("xwiki/2.0"); page.setTitle(input_row.title); page.setContent(""); marshaller.marshal(page,new File("C:/tmp/pageout.xml")); // Creation des proprietes de l'article List<Property> props = new ArrayList<Property>(); Property prop1=new Property(); prop1.setName("content"); prop1.setType("com.xpn.xwiki.objects.classes.TextAreaClass"); prop1.setValue(input_row.fulltext); props.add(prop1); Property prop2=new Property(); prop2.setName("extract"); prop2.setType("com.xpn.xwiki.objects.classes.TextAreaClass"); prop2.setValue(input_row.introtext); props.add(prop2); Property prop3=new Property(); prop3.setName("title"); prop3.setType("com.xpn.xwiki.objects.classes.StringClass"); prop3.setValue(input_row.title); props.add(prop3); Property prop4=new Property(); prop4.setName("category"); prop4.setType("com.xpn.xwiki.objects.classes.DBTreeListClass"); prop4.setValue(input_row.category); props.add(prop4); Property prop5=new Property(); prop5.setName("publishDate"); prop5.setType("com.xpn.xwiki.objects.classes.DateClass"); prop5.setValue(""+input_row.created); props.add(prop5); //Creation de l'objet avec la liste des proprietes pour l'article org.xwiki.rest.model.jaxb.Object obj = new org.xwiki.rest.model.jaxb.Object().withProperties(props); obj.setSpace("Blog"); obj.setPageName(input_row.title); obj.setClassName("Blog.BlogPostClass"); marshaller.marshal(obj, new File("C:/tmp/objout.xml")); //PUT pour créer la PAGE PutMethod putMethodpage=new PutMethod("http;//localhost:8090/xwiki/rest/wikis/xwiki/spaces/Blog/pages/"+input_row.title); putMethodpage.setRequestBody(new FileInputStream ("C:/tmp/pageout.xml")); putMethodpage.addRequestHeader("Accept", "application/xml"); httpClient.executeMethod(putMethodpage); // PUT pour créer l'OBJECT PutMethod putMethodobj=new PutMethod("http;//localhost:8090/xwiki/rest/wikis/xwiki/spaces/Blog/pages/"+input_row.title+"/objects/Blog.BlogPostClass/0"); putMethodobj.setRequestBody(new FileInputStream ("C:/tmp/objout.xml")); putMethodobj.addRequestHeader("Accept", "application/xml"); httpClient.executeMethod(putMethodobj);
Donc voilà mon code, lorsque je l'exécute il ne m'affiche aucune erreur. Mais les pages n'ont pas été créé. Aurais-je oublié quelque chose ?
Faut-il que j'indique mon login quelque part ?
Merci, par avance, de votre aide...
Partager