model.web.ClientHttp.java Source code

Java tutorial

Introduction

Here is the source code for model.web.ClientHttp.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model.web;

import com.google.sljson.Gson;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import model.data.Data;
import model.data.HttpMetods;
import model.data.Job;
import model.data.Response;
import model.data.VirtualMachine;
import model.io.ClientHandler;
import model.io.JsonUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

/**
 *
 * @author user ? ? ?
 */
public class ClientHttp {

    public interface ConnectListener {
        void onStart();

        void onResult(Response response);

        void onError(Exception ex);
    }

    private final Gson gson;
    private String url;

    public ClientHttp(String url) {
        this.url = url;
        this.gson = JsonUtils.createGson();
    }

    public Response ping() throws Exception {
        ArrayList<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair(HttpMetods.METHOD, HttpMetods.PING));
        return new ClientHandler().getResponse(execute(params));

        //return new ClientHandler().getResponse(executeGet(params));
    }

    public Response<Job<Data, Data>> addJob(Job job) throws Exception {
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair(HttpMetods.DATA, gson.toJson(job.getInputData())));
        params.add(new BasicNameValuePair(HttpMetods.METHOD, HttpMetods.SEND_JOB));

        Response<Data> rData = new ClientHandler().getData(execute(params));
        job.setOutputData(rData.getData());
        job.setState(rData.getResultCode());
        return new Response(rData.getResultCode(), job);
    }

    public Response<List<VirtualMachine>> getVMState() throws Exception {
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair(HttpMetods.METHOD, HttpMetods.VM_STATE));

        return new ClientHandler().getVMState(execute(params));
    }

    public Response sendVMState(VirtualMachine vm) throws Exception {
        ArrayList<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair(HttpMetods.METHOD, HttpMetods.SEND_STATE));
        params.add(new BasicNameValuePair(HttpMetods.VM, gson.toJson(vm)));

        return new ClientHandler().getResponse(execute(params));

        //return new ClientHandler().getResponse(executeGet(params));
    }

    private String execute(List<NameValuePair> params) throws Exception {

        System.out.println("\nSending 'POST' request to URL : " + url);
        System.out.println("Post parameters : " + URLEncodedUtils.format(params, "utf-8"));

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url + "?" + URLEncodedUtils.format(params, "utf-8"));

        // add header
        post.setHeader("charset", "UTF-8");
        post.setHeader("Content-Type", "application/json");

        HttpResponse response = client.execute(post);

        System.out.println("Response Code : " + response.getStatusLine().getStatusCode());

        BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        StringBuffer result = new StringBuffer();
        String line = "";
        while ((line = rd.readLine()) != null) {
            result.append(line);
        }

        System.out.println("result: " + result.toString());
        return result.toString();
    }

    private String executeGet(List<NameValuePair> params) throws Exception {

        System.out.println("\nSending 'GET' request to URL : " + url);
        System.out.println("GET parameters : " + params);

        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(url + "?" + URLEncodedUtils.format(params, "utf-8"));

        // add header
        get.setHeader("charset", "UTF-8");
        get.setHeader("Content-Type", "application/json");

        HttpResponse response = client.execute(get);

        System.out.println("Response Code : " + response.getStatusLine().getStatusCode());

        BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        StringBuffer result = new StringBuffer();
        String line = "";
        while ((line = rd.readLine()) != null) {
            result.append(line);
        }

        System.out.println("result: " + result.toString());
        return result.toString();
    }

}