Création de page web depuis un fichier XML
Bonjour,
je souhaite envoyer un fichier XML afin que mon serveur (localhost) crée une page grâce au XML.
Voici mon code :
Code:
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); |
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.
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...