package com.hp.pn.service;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* This Class to test the PrintNet processing the snapshot performance.
* It's mainly to solve the out of memory issue.
*
* @author
*/
public class PnSnapshotPerformanceTest extends Thread {
private static final int threadNumber = 70;
private static final int perThreadCreatSnpNumber = 1;
private static final SimpleDateFormat dateFomat =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:ms");
public PnSnapshotPerformanceTest() {
super();
}
public PnSnapshotPerformanceTest(String name) {
super(name);
}
@Override
public void run() {
for (int i = 1; i <= perThreadCreatSnpNumber; i++) {
long startTime = System.currentTimeMillis();
System.out.println(getCurrDateStr() + " " + this.getName() + "_" + i + ": Start to handle the snapshot <<<<<<<<<<<<<<<<<<<<<<<<<<");
try {
doPost();// send post request
} catch (Exception e) {
e.printStackTrace();
}
long useTime = System.currentTimeMillis() - startTime;
System.out.println(getCurrDateStr() + " " +this.getName() + "_" + i + ": Handle the snapshot end >>>>>>>>>>>>>>>>>>>>>>>>>>>>use time: " + useTime/60000 + ":" + useTime%60000/1000 + ":" + useTime%60000%1000);
}
}
public void doPost() {
// 发送
HttpURLConnection conn = null;
try {
URL url = new URL("http://localhost:8080/pnet.web/pn_entry.jsp");
conn = (HttpURLConnection) url.openConnection();//新建连接实例
conn.setDoOutput(true);//是否打开输出流 true|false
conn.setRequestMethod("POST");//提交方法POST|GET
//conn.setUseCaches(false);//是否缓存true|false
//TODO test
String snapshotStr = readFile("C:/bill/HP/eclipse_workspace/DailyPractice/src/d20130304/snapshot.xml");
//String snapshotStr = readFile("C:/bill/HP/eclipse_workspace/DailyPractice/src/d20130304/snapshot_2.xml");
StringBuffer sb = new StringBuffer();
addPair(sb, "XML_string", snapshotStr);
String parametersStr = sb.substring(0, sb.length() - 1);
//System.out.println("parametersStr: \n" + parametersStr.substring(0, 1000));
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); //打开输出流往对端服务器写数据
out.write(parametersStr);//写数据,也就是提交你的表单 name=xxx&pwd=xxx
out.flush();//刷新
out.close();//关闭输出流
conn.getInputStream();
//BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
/*String line = null;
sb = new StringBuffer();*/
/*while ((line = reader.readLine()) != null) {
sb.append(line);
}*/
//line = sb.toString();
// 处理返回的字符串line
//System.out.println("return line: " + line);
//System.out.println(">>>>>>>>>>>>>>>>>>>>>>>Send request end. ");
} catch (IOException e) {
// handle e
System.out.println(">>>>>>>>>>>>>>IOException: " + e);
} finally {
if (conn != null) {
conn.disconnect();
//System.out.println("Disconnect successfully. ");
}
}
//发送结束
}
private String readFile(String filePath) {
FileReader fr = null;
BufferedReader br = null;
StringBuffer sBuffer = new StringBuffer();
try {
fr = new FileReader(filePath);// d20130304/snapshot.xml
} catch (FileNotFoundException e) {
e.printStackTrace();
}
br = new BufferedReader(fr);// 建立BufferedReader对象,并实例化为br
String tempLine;
try {
// 从文件读取一行字符串
tempLine = br.readLine();
// 判断读取到的字符串是否不为空
while (tempLine != null) {
sBuffer.append(tempLine);
sBuffer.append("\n");
tempLine = br.readLine();// 从文件中继续读取一行数据
}
//System.out.println("sBuffer: \n" + sBuffer);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();// 关闭BufferedReader对象
if (fr != null)
fr.close();// 关闭文件
} catch (IOException e) {
e.printStackTrace();
}
}
return sBuffer.toString().trim();
}
public static void addPair(StringBuffer sb, String name, String value)
throws UnsupportedEncodingException {
if (value == null) {
return;
}
sb.append(name);
sb.append("=");
sb.append(java.net.URLEncoder.encode(value, "UTF-8"));
sb.append("&");
}
public static String getCurrDateStr() {
Date date = new Date();
return dateFomat.format(date);
}
public static void main(String[] args) {
for (int i = 1; i <= threadNumber; i++) {
PnSnapshotPerformanceTest pspt = new PnSnapshotPerformanceTest("Thread_" + i);
pspt.start();
}
}
}
分享到:
相关推荐
### JAVA模拟网页发送请求 #### 一、概述 在日常的开发工作中,有时我们需要通过程序自动地访问某个网站并获取其内容,或者模仿用户的行为进行登录等操作。这些需求可以通过模拟HTTP请求的方式实现。本篇文章将...
java模拟客户端向服务器发送post请求
发送请求后,可以从响应中获取信息。首先检查响应码: ```java int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 处理成功 } else { // 处理错误 } ...
在发送请求后,ARC会显示详细的响应信息,包括状态码、响应头、以及响应体内容。状态码(如200、404、500等)提供了服务器对请求处理的成功与否的反馈,而响应头可能包含缓存控制、服务器信息、内容长度等重要数据。...
- 在发送请求之前,确保网络连接正常。 - 使用`try-catch-finally`结构来捕获可能的异常,并确保在`finally`块中释放资源,避免内存泄漏。 - 在处理响应时,注意编码问题,例如上述代码中的“UTF-8”。 - 如果在生产...
4. **发送请求体**:对于POST请求,需要写入请求体,可以通过`getOutputStream()`获取输出流并写入数据。 ```java try(OutputStream os = connection.getOutputStream()) { os.write(jsonData.getBytes...
5. 执行请求:使用HttpClient的`execute()`方法发送请求。 ```java CloseableHttpResponse response = httpClient.execute(req); ``` 6. 处理响应:获取并解析服务器返回的响应,例如,获取状态码、响应头和响应体...
Java 模拟发送 Form-Data 的请求方式是指在 Java 语言中模拟浏览器发送 Form-Data 格式的 HTTP 请求的方法。Form-Data 是一种常见的 HTTP 请求体格式,广泛应用于文件上传、表单提交等场景。下面是 Java 模拟发送 ...
这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...
我们可以使用 Java 语言来发送 HTTP 请求,并将 Cookie 信息写入到 HTTP 头部中,以便模拟用户的登陆行为。 Java 模拟 Cookie 登陆的实现 下面是一个简单的 Java 模拟 Cookie 登陆的示例代码: ```java import ...
Java中的HTTP异步请求是一种高效的网络通信方式,它允许程序在发送HTTP请求后不等待响应,而是立即继续执行其他任务,当服务器响应时,通过回调函数处理结果。这种方式避免了同步请求时线程阻塞的问题,提高了应用的...
4. 发送请求数据:如果请求类型是POST,可以通过`DataOutputStream`写入请求体的数据;如果是GET请求,通常参数会附加在URL上。 5. 获取响应:调用`getInputStream()`获取服务器响应的输入流,然后读取数据。 6. ...
主要分为以下几个部分:Http请求的基本概念、模拟Http请求的必要性、Apache HttpClient库的介绍及其在Java中的使用方法。 ### Http请求基本概念 Http(Hypertext Transfer Protocol)是用于从WWW服务器传输超文本...
5. **执行请求并处理响应**:发送请求后,可以读取响应状态码和数据。对于POST请求,需要先写入请求体,然后读取响应。 ```java connection.connect(); int responseCode = connection.getResponseCode(); if ...
在Java编程中,模拟HTTP请求是一项常见的任务,尤其在网页抓取、自动化测试以及网络数据获取等场景下。本项目涉及的关键技术点是利用HTTP客户端库进行登录操作,并抓取海投网的数据,随后将这些信息存储到MySQL...
2. **使用Java模拟HTTP POST请求** 3. **表单参数处理** ### 1. 构建表单HTML字符串 在提供的代码片段中,我们首先看到的是构建了一个HTML表单字符串`strHtml`。这个字符串包含了表单的基本结构以及多个隐藏字段,...
java模拟HTTP发送post和get请求工具类,使用httpClient类
在Java编程中,有时我们需要模拟HTTP POST请求向服务器发送数据,特别是当数据格式为JSON时。下面我们将详细探讨两种常见的实现方式,即使用`HttpURLConnection`和`HttpClient`。 **方法一:使用HttpURLConnection...
是一个Java 发送http put、delete、 post、 get 请求的工具类。可用在与restful service 进行通讯的代码中。
它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...