`

Java模拟HTTP发送请求

 
阅读更多
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模拟网页发送请求

    ### JAVA模拟网页发送请求 #### 一、概述 在日常的开发工作中,有时我们需要通过程序自动地访问某个网站并获取其内容,或者模仿用户的行为进行登录等操作。这些需求可以通过模拟HTTP请求的方式实现。本篇文章将...

    java模拟post请求

    java模拟客户端向服务器发送post请求

    使用Java模拟http请求.rar

    发送请求后,可以从响应中获取信息。首先检查响应码: ```java int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 处理成功 } else { // 处理错误 } ...

    模拟浏览器发送http请求的工具

    在发送请求后,ARC会显示详细的响应信息,包括状态码、响应头、以及响应体内容。状态码(如200、404、500等)提供了服务器对请求处理的成功与否的反馈,而响应头可能包含缓存控制、服务器信息、内容长度等重要数据。...

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    - 在发送请求之前,确保网络连接正常。 - 使用`try-catch-finally`结构来捕获可能的异常,并确保在`finally`块中释放资源,避免内存泄漏。 - 在处理响应时,注意编码问题,例如上述代码中的“UTF-8”。 - 如果在生产...

    java发送http请求工具类

    4. **发送请求体**:对于POST请求,需要写入请求体,可以通过`getOutputStream()`获取输出流并写入数据。 ```java try(OutputStream os = connection.getOutputStream()) { os.write(jsonData.getBytes...

    后台模拟发送GET和POST请求

    5. 执行请求:使用HttpClient的`execute()`方法发送请求。 ```java CloseableHttpResponse response = httpClient.execute(req); ``` 6. 处理响应:获取并解析服务器返回的响应,例如,获取状态码、响应头和响应体...

    java模拟发送form-data的请求方式

    Java 模拟发送 Form-Data 的请求方式是指在 Java 语言中模拟浏览器发送 Form-Data 格式的 HTTP 请求的方法。Form-Data 是一种常见的 HTTP 请求体格式,广泛应用于文件上传、表单提交等场景。下面是 Java 模拟发送 ...

    java模拟微信浏览器访问.rar

    这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...

    Java 模拟cookie登陆简单操作示例

    我们可以使用 Java 语言来发送 HTTP 请求,并将 Cookie 信息写入到 HTTP 头部中,以便模拟用户的登陆行为。 Java 模拟 Cookie 登陆的实现 下面是一个简单的 Java 模拟 Cookie 登陆的示例代码: ```java import ...

    javaHttp异步请求

    Java中的HTTP异步请求是一种高效的网络通信方式,它允许程序在发送HTTP请求后不等待响应,而是立即继续执行其他任务,当服务器响应时,通过回调函数处理结果。这种方式避免了同步请求时线程阻塞的问题,提高了应用的...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    4. 发送请求数据:如果请求类型是POST,可以通过`DataOutputStream`写入请求体的数据;如果是GET请求,通常参数会附加在URL上。 5. 获取响应:调用`getInputStream()`获取服务器响应的输入流,然后读取数据。 6. ...

    模拟Http请求

    主要分为以下几个部分:Http请求的基本概念、模拟Http请求的必要性、Apache HttpClient库的介绍及其在Java中的使用方法。 ### Http请求基本概念 Http(Hypertext Transfer Protocol)是用于从WWW服务器传输超文本...

    Java实现的Https请求工具类

    5. **执行请求并处理响应**:发送请求后,可以读取响应状态码和数据。对于POST请求,需要先写入请求体,然后读取响应。 ```java connection.connect(); int responseCode = connection.getResponseCode(); if ...

    java模拟http请求登陆抓取海投网信息

    在Java编程中,模拟HTTP请求是一项常见的任务,尤其在网页抓取、自动化测试以及网络数据获取等场景下。本项目涉及的关键技术点是利用HTTP客户端库进行登录操作,并抓取海投网的数据,随后将这些信息存储到MySQL...

    java发起http请求提交表单

    2. **使用Java模拟HTTP POST请求** 3. **表单参数处理** ### 1. 构建表单HTML字符串 在提供的代码片段中,我们首先看到的是构建了一个HTML表单字符串`strHtml`。这个字符串包含了表单的基本结构以及多个隐藏字段,...

    Java发送post,get请求

    java模拟HTTP发送post和get请求工具类,使用httpClient类

    java模拟post请求发送json的例子

    在Java编程中,有时我们需要模拟HTTP POST请求向服务器发送数据,特别是当数据格式为JSON时。下面我们将详细探讨两种常见的实现方式,即使用`HttpURLConnection`和`HttpClient`。 **方法一:使用HttpURLConnection...

    java http 发送 put delete post get请求

    是一个Java 发送http put、delete、 post、 get 请求的工具类。可用在与restful service 进行通讯的代码中。

    HttpClient模拟get,post请求并发送请求参数(json等)

    它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...

Global site tag (gtag.js) - Google Analytics