您的位置:首页 > 编程语言 > Java开发

java多线程模拟有会话的访问web系统,并记录访问日志

2014-07-17 13:37 465 查看
代码如下:

不要做坏事呦

package pressureTest;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.net.MalformedURLException;

import java.util.Calendar;

import java.util.Scanner;

import org.apache.commons.httpclient.Cookie;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpException;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.GetMethod;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

public class HttpTest implements Runnable {

private static String strUrl = null;

private static long numL = 0L;

private static Scanner scanner = new Scanner(System.in);

private static File f = new File("E:\\test.txt");

private static HttpClient httpClient;

public HttpTest(HttpClient httpClient){

this.httpClient=httpClient;

}

public void run() {

while (true)

try {

// Cookie[] cookies = httpClient.getState().getCookies();

// httpClient.getState().addCookies(cookies);

GetMethod get = new GetMethod(strUrl + numL);

// get.setRequestHeader("Cookie" , cookies.toString());

int statusCode = httpClient.executeMethod(get);

// CloseableHttpClient httpclient = HttpClients.createDefault();

// HttpGet httpget = new HttpGet(strUrl + numL);

// CloseableHttpResponse response = httpclient.execute(httpget);

try {

// int statusCode = response.getStatusLine().getStatusCode();

if(statusCode!=200){

BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));

bw.write("第"+numL+"次访问,状态码:["+statusCode+"] 时间"+Calendar.getInstance().getTime().toString());

bw.newLine();

bw.close();

break;

}

} finally {

get.releaseConnection();

numL++;

}

Thread.sleep(10L);

} catch (InterruptedException e) {

while (true) {

e.getMessage();

try {

Thread.sleep(1000L);

} catch (InterruptedException ie) {

ie.printStackTrace();

}

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws HttpException, IOException {

HttpClient client = login();

System.out.println("");

int threadNum;

while (true) {

System.out.println("请输入要生成的线程数:");

threadNum = scanner.nextInt();

System.out.println("请输入网址:");

String str = scanner.next();

// String str = "http://www.baidu.com";

if ((!(str.startsWith("http://")))

&& (!(str.startsWith("https://")))) {

strUrl = "http://" + str;

System.out.println(strUrl);

} else {

strUrl = str;

}

if (str.indexOf("?") >= 0)

strUrl += "&num=";

else {

strUrl += "?num=";

}

System.out.println("--------------------------------------");

System.out.println("线程数:" + threadNum);

System.out.println("地址" + str);

System.out.println("请再次确认(Y/N):");

String tmp = scanner.next();

if ("Y".equalsIgnoreCase(tmp))

break;

if ("N".equalsIgnoreCase(tmp)) {

continue;

}

// System.out.println("输入错误,请重新输入(Y/N):");

}

BufferedWriter bw;

try {

bw = new BufferedWriter(new FileWriter(f, true));

bw.write("测试开始 时间:"+Calendar.getInstance().getTime().toString());

bw.newLine();

bw.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

for (int i = 0; i < threadNum; i++) {

HttpTest at = new HttpTest(client);

Thread t = new Thread(at);

t.start();

// System.out.println(i);

}

}

private static HttpClient login() throws HttpException, IOException {

HttpClient client = new HttpClient();

// web系统登录页面 以及登陆信息设置

PostMethod post = new PostMethod(

"http://XXXXXXXXXXXXX");

NameValuePair ie = new NameValuePair("User-Agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");

NameValuePair url = new NameValuePair("url", "/TelinCRMQW/");

NameValuePair username = new NameValuePair("username", "admin");

NameValuePair password = new NameValuePair("userpassword", "password");

NameValuePair session = new NameValuePair("session", "1111111");

post.setRequestBody(new NameValuePair[] { ie, url, username, password });

client.executeMethod(post);

System.out

.println("******************************登录******************************");

Cookie[] cookies = client.getState().getCookies();

client.getState().addCookies(cookies);

post.releaseConnection();

return client;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: