Przykład wywołanie narzędzia liner2 w Javie

package pl.clarin.nlp.worker.client;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.json.JSONObject;

public class demo {

    static private final String user = "adrsemailowy@prosze.zmienic";
    static private final String nlprestURL = "http://ws.clarin-pl.eu/nlprest2/base/";

    public static String nlpFileUpload(String fileName) throws IOException {
        return ClientBuilder.newClient().target(nlprestURL + "upload").request().
                post(Entity.entity(new File(fileName), MediaType.APPLICATION_OCTET_STREAM)).
                readEntity(String.class);
    }

    public static void nlpFileDownload(String id, String fileName) throws IOException {
        URL url = new URL(nlprestURL + "download" + id);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("GET");
        if (conn.getResponseCode() == 200) {
            InputStream is = conn.getInputStream();
            Files.copy(is, Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
        } else {
            throw new IOException("Error downloading file");
        }
    }

    private static String getRes(Response res) throws IOException {
        if (res.getStatus() != 200) {
            throw new IOException("Error in nlprest processing");
        }
        return res.readEntity(String.class);
    }

    public static String nlpProcess(String lpmn, String id) throws IOException, InterruptedException {
        JSONObject request = new JSONObject();
        Client client = ClientBuilder.newClient();
        request.put("file", id);
        request.put("lpmn", lpmn);
        request.put("user", user);
        String taskid = client.target(nlprestURL + "startTask").request().
                post(Entity.entity(request.toString(), MediaType.APPLICATION_JSON)).readEntity(String.class);

        String status = "";
        JSONObject jsonres = new JSONObject();
        while (!status.equals("DONE")) {
            String res = getRes(client.target(nlprestURL + "getStatus/" + taskid).request().get());

            jsonres = new JSONObject(res);

            status = jsonres.getString("status");
            if (status.equals("ERROR")) {
                throw new IOException("Error in processing");
            }
            if (status.equals("PROCESSING")) {
                System.out.println(String.format("%.2f", jsonres.getDouble("value") * 100) + "%");
            }
            if (status.equals("DONE")) {
                System.out.println("100%");
            }
            Thread.sleep(500);
        }
        return jsonres.getJSONArray("value").getJSONObject(0).getString("fileID");
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        String id = nlpFileUpload("demo.txt");
        String lpmn = "any2txt|wcrft2|liner2({\"model\":\"top9\"})|makezip";
        id = nlpProcess(lpmn, id);
        nlpFileDownload(id, "result.zip");
        System.out.println("Done");
    }
}

Zależności:

       <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.22</version>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20141113</version>
        </dependency>