Could anyone can share a exmaple of how to using httpClient 4.3 to put a
new page int to a xwiki.
I've tried could of times, but failed. All the examples are not with
httpClient 4.3.

I got error like 401, not authenticated, or 500,HTTP/1.1 500 Internal
Server Error
<html>
<head>
   <title>Status page</title>
</head>
<body style="font-family: sans-serif;">
<p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Internal
Server Error</p>
<p>The server encountered an unexpected condition which prevented it from
fulfilling the request</p>
<p>You can get technical details <a href="
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1";>here</a>
.<br>
Please continue your visit at our <a href="/">home page</a>.
</p>
</body>
</html>

Here is my code:
package org.cfgr.xwiki;

import java.beans.Encoder;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.net.URLEncoder;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.apache.commons.codec.
EncoderException;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.auth.AuthSchemeProvider;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Lookup;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import xwiki.rest.model.jaxb.ObjectFactory;
import xwiki.rest.model.jaxb.Page;
import xwiki.rest.model.jaxb.PageSummary;
import xwiki.rest.model.jaxb.Pages;

public class Importer {
    public static CloseableHttpClient getClient(String user, String pass){
        Credentials defaultcreds = new UsernamePasswordCredentials(user,
pass);
        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(
                new AuthScope("www.chinafgr.com", 8000),
                new UsernamePasswordCredentials(user, pass));
        CloseableHttpClient httpClient =  HttpClients.custom()
                .setDefaultCredentialsProvider(credsProvider)
                .build();

        return httpClient;
        }

    public static HttpClientContext createContext(String user, String pass){
        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(
                new AuthScope("www.chinafgr.com", 8000),
                new UsernamePasswordCredentials(user, pass));


        HttpClientContext context = HttpClientContext.create();
        context.setCredentialsProvider(credsProvider);
//        context.setAuthSchemeRegistry(authRegistry);
//        context.setAuthCache(authCache);
        return context;
    }

//    public Space putPage(CloseableHttpClient httpClient, String wiki,
String space, Page page){
//
//        JAXBContext context;
//        try {
//            context = JAXBContext.newInstance("org");
//            Unmarshaller unmarshaller = context.createUnmarshaller();
//            Marshaller marshaller = context.createMarshaller();
//            String name = page.getName();
//            name = URLEncoder.encode(name, "UTF-8");
//            page.setName(name);
//            page.setXwikiRelativeUrl("http://www.xwiki.org/rel/page";);
//            HttpPut putMethod = new HttpPut("
http://2.2.2.2:8080/xwiki/rest/wikis/"+ wiki +"/spaces/" + space +
"/pages/" + page.getName() );
//            putMethod.addHeader("Accept", "application/xml");
//            putMethod.addHeader("Accept-Ranges", "bytes");
//            Page p = new Page();
//            p.setContent(page.getContent());
//            p.setTitle(page.getTitle());
//            p.setParent(page.getParent());
//            JAXBElement<Page> jbe  = new ObjectFactory().createPage(p);
//            StringWriter writer = new StringWriter();
//
//            marshaller.marshal(jbe, writer); // Fill the StringWriter
with the page xml
//
//            System.out.println("WRITER = [[[[" + writer + "]]]]");
//
//            putMethod.setRequestEntity(new
StringRequestEntity(writer.toString(),
//                    "application/xml", "UTF-8"));
//
//            httpClient.execute(putMethod);
//        JAXBElement obj  =  (JAXBElement)
unmarshaller.unmarshal(putMethod.getResponseBodyAsStream());
//        System.out.println("Return is " + obj.getValue());
//    }

    public static void main(String[] args) {
        CloseableHttpClient httpclient = getClient("admin","admin");
        JAXBContext context;
        try {


            context = JAXBContext.newInstance("xwiki.rest.model.jaxb");
            Unmarshaller unmarshaller = context.createUnmarshaller();

            HttpGet getMethod = new HttpGet("
http://www.chinafgr.com:8000/xwiki/rest/wikis/xwiki/spaces/AppTest/pages/WebHome
");
            getMethod.addHeader("Accept", "application/xml");
            CloseableHttpResponse response = httpclient.execute(getMethod);
            try {

System.out.println("----------------------------------------");
                System.out.println(response.getStatusLine());

                // Get hold of the response entity
                HttpEntity entity = response.getEntity();

                // If the response does not enclose an entity, there is no
need
                // to bother about connection release
                if (entity != null) {
                    InputStream instream = entity.getContent();
                    JAXBElement o  =  (JAXBElement)
unmarshaller.unmarshal(instream);
                    Page page = (Page) o.getValue();

                    Marshaller marshaller = context.createMarshaller();
//                    String name = page.getName();
//                    name = URLEncoder.encode(name, "UTF-8");
//                    page.setName(name);
//                    page.setXwikiRelativeUrl("
http://www.xwiki.org/rel/page";);



                    HttpPut putMethod = new HttpPut("
http://www.chinafgr.com:8000/xwiki/rest/wikis/xwiki/spaces/wiki/pages/"; +
"NewPage" );
                    putMethod.addHeader("Content-Type", "application/xml");
                    putMethod.addHeader("Accept", "application/xml");
                    putMethod.addHeader("Authorization", "Basic " + new
Base64().encode("Admin:admin".getBytes()));

                    Page p = new Page();
//                    p.setContent(page.getContent());
//                    p.setTitle(page.getTitle());
                    p.setContent("Hello the world");
                    p.setTitle("ThePAGE");
                    p.setSyntax("xwiki/2.0");
                    p.setParent(page.getParent());
                    JAXBElement<Page> jbe  = new
ObjectFactory().createPage(p);
                    StringWriter writer = new StringWriter();

                    marshaller.marshal(jbe, writer); // Fill the
StringWriter with the page xml
                    System.out.println("WRITER = [[[[" + writer + "]]]]");
                    putMethod.setEntity(new StringEntity(writer.toString(),
                             "application/xml", "UTF-8"));
                    response = httpclient.execute(putMethod);

System.out.println("----------------------------------------");
                    System.out.println(response.getStatusLine());
                   // JAXBElement obj  =  (JAXBElement)
unmarshaller.unmarshal(response.getEntity().getContent());
                   //System.out.println("Return is " + obj.getValue());
                    for(;;){
                        int c=response.getEntity().getContent().read();
                        if(c<0)
                            break;
                        System.out.print((char)c);
                    }
                    System.out.println();
//                    Pages page =  (Pages)unmarshaller.unmarshal(instream);
//                    for(PageSummary ps:page.getPageSummary())
//                        System.out.println(ps.getName());


                }
            } finally {
                response.close();
            }
        } catch (JAXBException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to