eXistDB简单通讯06(RPC)

  • 保存文件
  • 取回文件

1、GetFileRPC.java

package com.neohope.existdb.test;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Vector;

public class GetFileRPC {
    public static void GetXML(String documentId, String user, String pwd) throws Exception {
        String uri = "http://localhost:8080/exist/xmlrpc";
        XmlRpcClient client = new XmlRpcClient();
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL(uri));
        config.setBasicUserName(user);
        config.setBasicPassword(pwd);
        client.setConfig(config);

        HashMap<String, String> options = new HashMap<String, String>();
        options.put("indent", "yes");
        options.put("encoding", "UTF-8");
        options.put("expand-xincludes", "yes");
        options.put("process-xsl-pi", "no");

        Vector<Object> params = new Vector<Object>();
        params.addElement(documentId);
        params.addElement(options);
        String xml = (String)
                client.execute("getDocumentAsString", params);
        System.out.println(xml);
    }

    public static void GetXMLChuncked(String documentId, String outPath, String user, String pwd) throws IOException, XmlRpcException {
        String url = "http://localhost:8080/exist/xmlrpc";

        XmlRpcClient client = new XmlRpcClient();
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL(url));
        config.setBasicUserName(user);
        config.setBasicPassword(pwd);
        client.setConfig(config);

        Hashtable<String, String> options = new Hashtable<String, String>();
        options.put("indent", "no");
        options.put("encoding", "UTF-8");

        Vector<Object> params = new Vector<Object>();
        params.addElement(documentId);
        params.addElement(options);

        FileOutputStream fos = new FileOutputStream(outPath);
        HashMap<?, ?> ht = (HashMap<?, ?>) client.execute("getDocumentData", params);
        int offset = ((Integer) ht.get("offset")).intValue();
        byte[] data = (byte[]) ht.get("data");
        String handle = (String) ht.get("handle");
        fos.write(data);

        while (offset != 0) {
            params.clear();
            params.addElement(handle);
            params.addElement(new Integer(offset));

            ht = (HashMap<?, ?>) client.execute("getNextChunk", params);
            data = (byte[]) ht.get("data");
            offset = ((Integer) ht.get("offset")).intValue();
            fos.write(data);
        }
        fos.close();
    }

    public static void main(String args[]) throws Exception {
        String user = "neotest";
        String pwd = "neotest";
        //GetXML("/db/CDA/入院患者护理评估单05.xml", user, pwd);
        GetXMLChuncked("/db/PNG/兔子.png","兔子1.png", user, pwd);
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

*