Package com.zaranux.os.server.util

Source Code of com.zaranux.os.server.util.ZHTTP

package com.zaranux.os.server.util;

import java.io.InputStream;
import java.net.Socket;

import org.apache.http.entity.StringEntity;

import org.apache.http.message.BasicHttpEntityEnclosingRequest;


import org.apache.http.HttpResponse;
import org.apache.http.HttpHost;

import org.apache.http.protocol.HttpProcessor;
import org.apache.http.protocol.HttpRequestExecutor;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.RequestConnControl;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;

import org.apache.http.ConnectionReuseStrategy;

import org.apache.http.protocol.ImmutableHttpProcessor;

import org.apache.http.HttpEntity;
import org.apache.http.entity.InputStreamEntity;

import org.apache.http.HttpVersion;

import org.apache.http.params.HttpParams;

import org.apache.http.params.HttpProtocolParams;

import org.apache.http.impl.DefaultHttpClientConnection;
import org.apache.http.impl.DefaultConnectionReuseStrategy;

import org.apache.http.params.SyncBasicHttpParams;
import org.apache.http.HttpRequestInterceptor;


import java.net.URLEncoder;

import com.zaranux.os.server.core.Identity;

public class ZHTTP {

  //private static String hostname ;
  //private static int port;
 
  // s = -1 -> all
  public static InputStream syuncHTTPpost(String host, int port,String zSystemcall, String zParameterList, String path, InputStream is, long s , Identity requester) throws Exception
  {   
  //  try
  //  {
                 
//      path = "/zaranux/" +URLEncoder.encode( path.substring(1), "UTF-8") + "?" + "ZOperation="+ zOperation + "&SessionToken=" + URLEncoder.encode(sessionToken, "UTF-8")  + "&ZParameterList="+ URLEncoder.encode(zParameterList, "UTF-8");
    if(path.startsWith("/")) path =  path.substring(1); // e.g. @zaranux/a/b/c
    // path = path + "?" + "systemcall="+ zSystemcall + "&identity=" + URLEncoder.encode(requester.getID(), "UTF-8") + "&identityAssertion=" + URLEncoder.encode(requester.getIDAssertion(), "UTF-8") + "&parameterList="+ URLEncoder.encode(zParameterList, "UTF-8");
    path = path + "?" + getParams( zSystemcall,requester.getID(),requester.getIDAssertion(), zParameterList, host);
      //      path = "/zaranux";
    path = "/" + path;

      HttpEntity entity = new InputStreamEntity(is,s);
      String Content_Type = "application/octet-stream";
   
      return syncHTTPpost(host,port,path, entity, Content_Type);
  //  }catch(Exception e)
  //  {
  //  }
  //  return null;
  }
 
  private static String getParams(String systemcall, String identity, String idAssertion, String paramList, String host)throws Exception
  {
    String params = "systemcall="+ systemcall + "&identity=" + URLEncoder.encode(identity, "UTF-8") + "&identityAssertion=" + URLEncoder.encode(idAssertion, "UTF-8") + "&parameterList="+ URLEncoder.encode(paramList, "UTF-8");
    //if(host.startsWith("localhost"))
    //  params += "&gwt.codesvr=localhost:9997";
    return params;
  }
  public static InputStream syuncHTTPpost(String host, int port,String zSystemcall, String zParameterList, String path , Identity requester) throws Exception
  {   
    InputStream is = null;
    if(path.startsWith("/")) path =  path.substring(1); // e.g. @zaranux/a/b/c

    path = "/" + path;
    String Content_Type = "application/x-www-form-urlencoded";
    //try{
      //HttpEntity entity = new StringEntity("systemcall="+ zSystemcall + "&identity=" + URLEncoder.encode(requester.getID(), "UTF-8") + "&IdentityAssertion=" + URLEncoder.encode(requester.getIDAssertion(), "UTF-8") + "&parameterList="+ zParameterList, "UTF-8");
    HttpEntity entity = new StringEntity(getParams( zSystemcall,requester.getID(),requester.getIDAssertion(), zParameterList, host) );

      is = syncHTTPpost(host,port,path, entity, Content_Type);
    //}
    //catch(Exception e)
    //{
    //}
    return is;
  }
 
  public static InputStream syncHTTPpost(String host, int port,String path, HttpEntity entity, String Content_Type) throws Exception
  {
    path = path.replaceAll(" ", "%20");
    System.out.println("replaced spaces with %20>" + path);

   
    InputStream is = null;
        HttpParams params = new SyncBasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "UTF-8");
        HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
        HttpProtocolParams.setUseExpectContinue(params, true);
       
        HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] {
                // Required protocol interceptors
                new RequestContent(),
                new RequestTargetHost(),
                // Recommended protocol interceptors
                new RequestConnControl(),
                new RequestUserAgent(),
                new RequestExpectContinue()});
       
        HttpRequestExecutor httpexecutor = new HttpRequestExecutor();

        HttpContext context = new BasicHttpContext(null);
       
        HttpHost h = new HttpHost(host, port);
       
        DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
        ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();

        context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
        context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, h);

        try {
           

                if (!conn.isOpen()) {
                    Socket socket = new Socket(h.getHostName(), h.getPort());
                    conn.bind(socket, params);
                }
                BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST",
                        path);
                request.setEntity(entity);
                System.out.println(">> Request URI: " + request.getRequestLine().getUri());
                request.setHeader("Content-Type", Content_Type);
                request.setParams(params);
                httpexecutor.preProcess(request, httpproc, context);
                HttpResponse response = httpexecutor.execute(request, conn, context);
                response.setParams(params);
                httpexecutor.postProcess(response, httpproc, context);
               
                System.out.println("<< Response: " + response.getStatusLine());
                //System.out.println(EntityUtils.toString(response.getEntity()));
                //System.out.println("==============");
                HttpEntity he = response.getEntity();
                System.out.println("getContentLength " + he.getContentLength());
                is = he.getContent();
                //byte[] b = new byte[1024];
                //System.out.println("Read : " + is.read(b));
                //if (!connStrategy.keepAlive(response, context)) { // investigate! remove to see if resolves trunkation issue
                //    conn.close();
               // } else {
                    System.out.println("Connection kept alive...");
               // }
            }
            catch(Exception e)
            {
              System.out.println(e);
              throw e;
            }
            finally {
              try{
                //conn.close();
              }catch(Exception e)
              {
              }
            } 
        return is;
  }
 
  /*
  public static String doSyncPost(String zOperation, String path, String parameterList,long size, InputStream is)
  {
        HttpParams params = new SyncBasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "UTF-8");
        HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
        HttpProtocolParams.setUseExpectContinue(params, true);
       
        HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] {
                // Required protocol interceptors
                new RequestContent(),
                new RequestTargetHost(),
                // Recommended protocol interceptors
                new RequestConnControl(),
                new RequestUserAgent(),
                new RequestExpectContinue()});
       
        HttpRequestExecutor httpexecutor = new HttpRequestExecutor();

        HttpContext context = new BasicHttpContext(null);
       
        HttpHost host = new HttpHost(hostname, port);
       
        DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
        ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();

        context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
        context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);

        try {
           
            HttpEntity[] requestBodies = {
                    new StringEntity(
                            "This is the first test request", "UTF-8")
            };
           
            for (int i = 0; i < requestBodies.length; i++) {
                if (!conn.isOpen()) {
                    Socket socket = new Socket(host.getHostName(), host.getPort());
                    conn.bind(socket, params);
                }
                BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST",
                        path);
                request.setEntity(requestBodies[i]);
                System.out.println(">> Request URI: " + request.getRequestLine().getUri());

                request.setParams(params);
                httpexecutor.preProcess(request, httpproc, context);
                HttpResponse response = httpexecutor.execute(request, conn, context);
                response.setParams(params);
                httpexecutor.postProcess(response, httpproc, context);
               
                System.out.println("<< Response: " + response.getStatusLine());
                System.out.println(EntityUtils.toString(response.getEntity()));
                System.out.println("==============");
                if (!connStrategy.keepAlive(response, context)) {
                    conn.close();
                } else {
                    System.out.println("Connection kept alive...");
                }
            }
            }
            catch(Exception e)
            {
              System.out.println(e);
            }
            finally {
              try{
                conn.close();
              }catch(Exception e)
              {
              }
            } 
        return "return";
    }

  public static String doSyncPost3(String zOperation, String path, String parameterList,long size, InputStream is)
  {
    System.out.println("doSyncPost ");

    String output = null;
    DefaultHttpClientConnection conn = new DefaultHttpClientConnection();

    HttpRequestExecutor httpexecutor = new HttpRequestExecutor();

    try
    {
          BasicHttpProcessor httpproc = new BasicHttpProcessor();
          httpproc.addInterceptor(new RequestContent());
          httpproc.addInterceptor(new RequestTargetHost());
          httpproc.addInterceptor(new RequestConnControl());
          httpproc.addInterceptor(new RequestUserAgent());
          httpproc.addInterceptor(new RequestExpectContinue());
         
          HttpContext context = new BasicHttpContext(null);
         
//      Socket socket = new Socket(hostname,port);
          HttpHost host = new HttpHost(hostname, port);
   
          ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();
         
          context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
          context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
      // Initialize socket
      HttpParams params = new BasicHttpParams();
          HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
          HttpProtocolParams.setContentCharset(params, "UTF-8");
          HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
          HttpProtocolParams.setUseExpectContinue(params, true);
         
//      conn.bind(socket, params);
            if (!conn.isOpen()) {
                Socket socket = new Socket(host.getHostName(), host.getPort());
                conn.bind(socket, params);
            }
      BasicHttpEntityEnclosingRequest request = null;
      String rp = "ZOperation="+ zOperation+"&ZParameterList=" + parameterList;
     
     
      if(is == null)
      {
        path +=  "?" + rp;
        request = new BasicHttpEntityEnclosingRequest("POST",path,HttpVersion.HTTP_1_1);
        //request.setHeader("Content-Type", "application/x-www-form-urlencoded");
        request.setHeader("Content-Type", "application/octet-stream");

        request.setEntity(new StringEntity("help", "UTF-8"));
      }else
      {
        path +=  "?" + rp;
        request = new BasicHttpEntityEnclosingRequest("POST",path,HttpVersion.HTTP_1_1);
//        request.setEntity(new InputStreamEntity(is,size));
        request.setEntity(new StringEntity("help", "UTF-8"));

        request.setHeader("Content-Type", "application/octet-stream");
      }
     
      request.setParams(params);
     
      request.removeHeaders("Content-Length");
      httpexecutor.preProcess(request, httpproc, context);
      //System.out.println(EntityUtils.toString(request.getEntity()));
      System.out.println("sending request ... ");
            httpexecutor.preProcess(request, httpproc, context);
            HttpResponse response = httpexecutor.execute(request, conn, context);
      System.out.println("response received. ");

            response.setParams(params);
            httpexecutor.postProcess(response, httpproc, context);

      System.out.println(response.getStatusLine());
      HttpEntity entity = response.getEntity();
      if (entity != null) {
      // Do something useful with the entity and, when done, call
      // consumeContent() to make sure the connection can be re-used
        output = (EntityUtils.toString(entity));
        System.out.println(" entity response : " + output);
 
      entity.consumeContent();
    }
    }catch(Exception e)
    {
      //System.out.println("exception " + e.printStackTrace());
      e.printStackTrace();

    }
    finally{
      try
      {
        conn.close();
      }catch(Exception e)
      {
       
      }
    }
    return output;
  }
 
  public static String doSyncPost2(String zOperation, String path, String parameterList,long size, InputStream is)
  {
    System.out.println("doSyncPost");

    String output = null;

      HttpParams params = new BasicHttpParams();   
          HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
          HttpProtocolParams.setContentCharset(params, "UTF-8");
          HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
          HttpProtocolParams.setUseExpectContinue(params, true);

         
      HttpProcessor httpproc = new BasicHttpProcessor();
      HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
        HttpContext context = new BasicHttpContext(null);
 
          HttpHost host = new HttpHost(hostname, 7070);

      DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
      ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();
     
          context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
          context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
         
      try
      {
      conn.isOpen();
      //BasicHttpEntityEnclosingRequest request = null;
      BasicHttpRequest request = null;
      String rp = "ZOperation="+ zOperation + "&ZParameterList=" + parameterList;
     
      if(!conn.isOpen())
      {
        Socket socket = new Socket(hostname,port);
        conn.bind(socket, params);
      }
      if(is != null)
      {
        request = new BasicHttpRequest("POST",path);//new BasicHttpEntityEnclosingRequest("POST",path); //,HttpVersion.HTTP_1_1);
        //request.setHeader("Content-Type", "application/x-www-form-urlencoded");
        //request.setEntity(new StringEntity("hello!", "UTF-8"));
        System.out.println("path " + path);
      }else
      {
        path +=  "?" + rp;
        request = new BasicHttpEntityEnclosingRequest("POST",path,HttpVersion.HTTP_1_1);
        //request.setEntity(new InputStreamEntity(is,size));
        request.setHeader("Content-Type", "application/octet-stream");
        System.out.println("path " + path);

      }
     
      System.out.println(">> Request Line: " + request.getRequestLine());
//      System.out.println(">> Entity Line: " + EntityUtils.toString(request.getEntity()));

      request.setParams(params);
      System.out.println("sending post");

      httpexecutor.preProcess(request, httpproc, context);
      HttpResponse response = httpexecutor.execute(request, conn, context);
            response.setParams(params);
            httpexecutor.postProcess(response, httpproc, context);
      System.out.println("entity received!" + response.getStatusLine());

      HttpEntity entity = response.getEntity();
      output = (EntityUtils.toString(entity));
      System.out.println("output = "+ output);
     
            if (!connStrategy.keepAlive(response, context)) {
                conn.close();
            } else {
                System.out.println("Connection kept alive...");
            }
    }
    catch(Throwable e)
    {
      System.out.println(e);
    }
    finally{
      try
      {
        conn.close();
      }catch(Exception e)
      {
        System.out.println(e);
      }
      System.out.println("finally");

    }
    return output;
  }
  */
  /*
  public static void doPost(String zOperation, String path, String parameterList, InputStream is,OutputStream os,final AsyncCallback<Boolean> callback)
  {
    DefaultHttpClientConnection conn = new DefaultHttpClientConnection();

    try
    {
      Socket socket = new Socket(hostname,port);
      HttpParams params = new BasicHttpParams();
     
      conn.bind(socket, params);
     
      BasicHttpEntityEnclosingRequest request = null;
      String rp = "ZOperation="+ zOperation + "&ZParameterList=" + parameterList;
     
      if(is != null)
      {
        request = new BasicHttpEntityEnclosingRequest("POST",path,HttpVersion.HTTP_1_1);
        request.setHeader("Content-Type", "application/x-www-form-urlencoded");
        request.setEntity(new StringEntity(rp, "UTF-8"));
      }else
      {
        path +=  "?" + rp;
        request = new BasicHttpEntityEnclosingRequest("POST",path,HttpVersion.HTTP_1_1);
        request.setEntity(new InputStreamEntity(is,-1));
        request.setHeader("Content-Type", "application/octet-stream");
      }
      conn.sendRequestHeader(request);
      conn.sendRequestEntity(request);
     
      HttpResponse response =  conn.receiveResponseHeader();
      conn.receiveResponseEntity(response);
      HttpEntity entity = response.getEntity();
     
      if(entity != null){
        if(os != null)
        {
          entity.writeTo(os);
        }
        entity.consumeContent();
      }
      callback.onSuccess(true);
      conn.close();
    }
    catch(Throwable e)
    {
      callback.onFailure(e);
    }
    finally{
      try
      {
        conn.shutdown();
      }catch(Exception e)
      {
      }
    }
  }*/
}
 
TOP

Related Classes of com.zaranux.os.server.util.ZHTTP

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.