⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpclient.java

📁 Java HTTP Server and Client - easy to configure (Client is multithreaded for load testing)
💻 JAVA
字号:
import java.net.*;import java.io.*;import java.util.Date;import java.util.Properties;public class HTTPClient {  public HTTPClient() {  } private static String HOST = "";  private static String INPUT_FILE = "";  private static int HOST_PORT = 80;  // Choose to LOGIN, TARGET POST (query,upsert,delete)  private static final int LOGIN = 0;  private static final int TARGET = 1;  private static final int LOGOFF = 2;  private static int CURRENT_NUM = 0;  private static int NUMBER_TO_SEND = 1;  private static int NUMBER_TO_LOGOFF = 0;  private static int CrashAfter = -1;  private static int LOW_LOG = 3;  private static int NORMAL_LOG = 3;  private static int HIGH_LOG = 5;  // current log level//  private static int LOGLEVEL = HIGH_LOG;  private static int LOGLEVEL = NORMAL_LOG;  private static Properties cfgProps = null;  private static final String sPropertyHeader = "############################################\r\n" +"# HTTPClient.class Config File \r\n" +"#\r\n" +"# The HTTPClient class can be used to as a HTTPClient\r\n" +"# To use, type java HTTPClient # to send \r\n" +"#   Where # to send is the # of events to send\r\n" +"#\r\n" +"# InputFile = The input file with xml\r\n" +"# Hostname = ip address\r\n" +"# CrashAfter = Number of Events to crash after\r\n" +"# Port = Port of web server \r\n" +"# URL = URL of servlet (ie. /servlet/)\r\n" +                             "# LOGLEVEL = 0 or 3 or 5 (0 is low, 3 is normal, 5 is high) \r\n" +                             "#                           \r\n" +                             "#\r\n" +                             "#############################################";  public static void main(String args[])  {    cfgProps = new Properties();    // Read Config File    try    {       cfgProps.load(new FileInputStream("HTTPClient.cfg"));    }    catch (Exception e)    {       System.out.println("Please use the HTTPClient.cfg File");       System.out.println(e.toString());       try       {          cfgProps.store(new FileOutputStream("HTTPClient.cfg"), sPropertyHeader);       }       catch (Exception ex)       {}       System.exit(0);    }    try    {      Date dStart = null;      Date dEnd = null;      int nCount = 0;      dStart = new Date();      // Send        SendToHTTP();if (LOGLEVEL > LOW_LOG){        System.out.println("Sending to HTTP request #1");}    // BEGIN TIME    dEnd = new Date();    Date dTotalTime = new Date(((dEnd.getTime() - dStart.getTime())));    System.out.println("***Total Time for HTTPClient: " + dTotalTime.getTime()/1000 + " seconds.");    System.out.println("***Total # of Events sent: " + nCount);    if (nCount > 0)    {       System.out.println("***Total Time/1000 events: " + ((dTotalTime.getTime()/nCount)) + " seconds.");//       System.out.println("***" + nCount/((dTotalTime.getTime()/1000)) + " Events/Second.");    }    // END TIME    }    catch (Exception e)    {      e.printStackTrace();    }  } // end main  private static void SendToHTTP() throws Exception  {    String sLocalHost = new String();    DataInputStream inServer;    int nServerReturn = 0;    String sSize = new String();    ByteArrayOutputStream baosOutput = new ByteArrayOutputStream();    String sHost = new String();    String sPost = new String();    String sUrl = new String();    Socket sk = null;    String sCookie = new String();    int nPort = 0;    byte bRead[] = new byte[1024];      // Choose Destination Server/Port      sHost = HOST;      nPort = HOST_PORT;      try      {         sHost = cfgProps.getProperty("Hostname");         INPUT_FILE = cfgProps.getProperty("InputFile");         nPort = Integer.parseInt(cfgProps.getProperty("Port"));         sUrl = cfgProps.getProperty("URL");         LOGLEVEL = Integer.parseInt(cfgProps.getProperty("LOGLEVEL"));         if (sHost.length() < 1 || sUrl.length() < 1)         {           throw new Exception();         }      }      catch (Exception e)      {         System.out.println("Please check Hostname, CrashAfter, URL, LOGLEVEL, and Port in SiebelSWEStress.cfg");         System.exit(-1);      }      // Open Connection to Server      try      {if (LOGLEVEL > LOW_LOG){        System.out.println("Connecting to " + sHost + ":" + nPort + "...");}        sk = new Socket(sHost, nPort);      }      catch (Exception e)      {        System.out.println("Can't Connect to " + sHost + ":" + nPort + ". Error:\n " + e.toString());        System.exit(-1);      }      // Get Input and Output streams      inServer = new DataInputStream(sk.getInputStream());      PrintStream psPostToCGI = new PrintStream(sk.getOutputStream());if (LOGLEVEL > LOW_LOG){      System.out.println("Connected.");}      // Choose URL      // Get HTTP Header and Post string      String sPartHeader = sGetAndHeader();//      String sFullHeader = "POST " + sUrl + " HTTP/1.0" + sPartHeader;      String sFullHeader = "Get " + sUrl + " HTTP/1.0" + sPartHeader;      psPostToCGI.println(sFullHeader);      psPostToCGI.flush();      psPostToCGI.println(sPost + "\r\n");/*      byte[] barray = {67,79,78,78,69,67,84,32,118,97,117,108,116,52,46,109,105,100,115,46,99,111,109,58,52,52,51,32,72,84,84,80,47,49,46,48,13,10,85,115,101,114,45,65,103,101,110,116,58,32,77,111,122,105,108,108,97,47,52,46,48,32,40,99,111,109,112,97,116,105,98,108,101,59,32,77,83,73,69,32,53,46,48,49,59,32,87,105,110,100,111,119,115,32,78,84,32,53,46,48,41,13,10,72,111,115,116,58,32,118,97,117,108,116,52,46,109,105,100,115,46,99,111,109,13,10,67,111,110,116,101,110,116,45,76,101,110,103,116,104,58,32,48,13,10,80,114,111,120,121,45,67,111,110,110,101,99,116,105,111,110,58,32,75,101,101,112,45,65,108,105,118,101,13,10,80,114,97,103,109,97,58,32,110,111,45,99,97,99,104,101,13,10,13,10};      System.out.println("Sending length: " + barray.length);//      String sFullHeader = new String(barray);      DataOutputStream dOut = new DataOutputStream(sk.getOutputStream());      dOut.write(barray);      dOut.flush();*//* StringBuffer sbuf = new StringBuffer(40); sbuf.append(-1); sbuf.append(21); sbuf.append(-1); sbuf.append(-1); sbuf.append(-1); sbuf.append(-1); sbuf.append(3);*//* ** THIS IS FOR POST      sPost = sGetPostString(cfgProps);      // Get HTTP Header and Post string      String sPartHeader = sGetPostAndHeader(sPost, sCookie);//      String sFullHeader = "POST " + sUrl + " HTTP/1.0" + sPartHeader;      String sFullHeader = "POST " + sUrl + " HTTP/1.0" + sPartHeader;      psPostToCGI.println(sFullHeader);      psPostToCGI.flush();      psPostToCGI.println(sPost + "\r\n");*///      psPostToCGI.flush();if (LOGLEVEL == 5){      System.out.println("Posting: \n" + new String(sFullHeader));}if (LOGLEVEL > NORMAL_LOG){      System.out.println("\nWaiting for reply..");}      int nCount = 0;      // Wait up to 120 seconds before time out for read      sk.setSoTimeout(30000);      // Read Information from server      try      {        while ((nServerReturn = inServer.read(bRead)) > 0)        {             baosOutput.write(bRead, 0, nServerReturn);System.out.print(nServerReturn + "-" + new String(bRead));        } // end while continuing read      }      catch (Exception e)      {        e.printStackTrace();        System.out.println("****Timed out after 30 seconds!!!!!..");       // Time out read      }      String sReturn = new String(baosOutput.toByteArray());//if (LOGLEVEL > NORMAL_LOG){//      System.out.println("Reply from server:\n");//      System.out.println(sReturn);}      // Error?      if (sReturn.indexOf("400") > 0)      {//         throw new Exception("Reply ERROR!");      }      sk.close();  } // end SendToSWE  // Returns Header  private static String sGetPostAndHeader(String sContent, String sCookie)  {     String sHeader = "\r\nContent-Type: application/x-www-form-urlencoded";     if (sCookie.length() > 0)     {       sHeader += "\r\nCookie: " + sCookie;     }     sHeader +=  "\nContent-Length: " + (sContent.length() ) + "\r\n\r\n";            //        "\r\nPragma: no-cache\r\nCache-Control: max-stale=0\r\n" +     return sHeader;  } // end sGetHeader  private static String sGetAndHeader()  {     String sHeader = "Content-Length: 0\r\n\r\n";//     "\r\nPragma: no-cache\r\nCache-Control: max-stale=0\r\n" +     return sHeader;  } // end sGetHeader  // Returns Post string  private static String sGetPostString(Properties cfgProps)  {    String sPost = "oops";    try    {      File file = new File(INPUT_FILE);      BufferedReader br = new BufferedReader(new FileReader(file));      String tempString = br.readLine();      StringBuffer sb = new StringBuffer((int)file.length());      while (tempString != null)      {        sb.append(tempString.trim());        tempString = br.readLine();      }      sPost = sb.toString();    }    catch (Exception e)    {      e.printStackTrace();      System.exit(1);    }    return sPost;  } // end sTargetString}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -