📄 httpclient.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 + -