1. 程式人生 > >模擬http請求測試controller層

模擬http請求測試controller層

1.HTTPUtils.java

package com.project.utils;

import java.io.IOException;
import java.net.URL;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;

public class HTTPUtils {

	private final static Logger logger = Logger.getLogger(HTTPUtils.class);

	private final static String OPERATER_NAME = "【HTTP操作】";

	private final static int SUCCESS = 200;

	private final static String UTF8 = "UTF-8";

	private HttpClient client;

	private static HTTPUtils instance = new HTTPUtils();

	/**
	 * 私有化構造器
	 */
	private HTTPUtils() {

		HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
		HttpConnectionManagerParams params = httpConnectionManager.getParams();
		params.setConnectionTimeout(5000);
		params.setSoTimeout(20000);
		params.setDefaultMaxConnectionsPerHost(1000);
		params.setMaxTotalConnections(1000);
		client = new HttpClient(httpConnectionManager);
		client.getParams().setContentCharset(UTF8);
		client.getParams().setHttpElementCharset(UTF8);
	}

	/**
	 * get請求
	 */
	public static String get(URL url) {
		return instance.doGet(url);
	}

	private String doGet(URL url) {
		long beginTime = System.currentTimeMillis();
		String respStr = StringUtils.EMPTY;
		try {
			logger.info(OPERATER_NAME + "開始get通訊,目標host:" + url);
			HttpMethod method = new GetMethod(url.toString());
			// 中文轉碼
			method.getParams().setContentCharset(UTF8);
			try {
				client.executeMethod(method);
			} catch (HttpException e) {

				logger.error(new StringBuffer("傳送HTTP GET給\r\n").append(url).append("\r\nHTTP異常\r\n"), e);
			} catch (IOException e) {

				logger.error(new StringBuffer("傳送HTTP GET給\r\n").append(url).append("\r\nIO異常\r\n"), e);
			}
			if (method.getStatusCode() == SUCCESS) {
				respStr = method.getResponseBodyAsString();
			}
			// 釋放連線
			method.releaseConnection();

			logger.info(OPERATER_NAME + "通訊完成,返回碼:" + method.getStatusCode());
			logger.info(OPERATER_NAME + "返回內容:" + method.getResponseBodyAsString());
			logger.info(OPERATER_NAME + "結束..返回結果:" + respStr);
		} catch (Exception e) {
			logger.info(OPERATER_NAME, e);
		}
		long endTime = System.currentTimeMillis();
		logger.info(OPERATER_NAME + "共計耗時:" + (endTime - beginTime) + "ms");

		return respStr;
	}

	/**
	 * POST請求
	 */
	public static String post(URL url, String content) {
		return instance.doPost(url, content);
	}

	private String doPost(URL url, String content) {
		long beginTime = System.currentTimeMillis();
		String respStr = StringUtils.EMPTY;
		try {
			logger.info(OPERATER_NAME + "開始post通訊,目標host:" + url.toString());
			logger.info("通訊內容:" + content);
			PostMethod post = new PostMethod(url.toString());
			RequestEntity requestEntity = new StringRequestEntity(content, "application/json", UTF8);
			post.setRequestEntity(requestEntity);
			// 設定格式
			post.getParams().setContentCharset(UTF8);

			client.executeMethod(post);
			if (post.getStatusCode() == SUCCESS) {
				respStr = post.getResponseBodyAsString();
			}

			logger.info(OPERATER_NAME + "通訊完成,返回碼:" + post.getStatusCode());
			logger.info(OPERATER_NAME + "返回內容:" + post.getResponseBodyAsString());
			logger.info(OPERATER_NAME + "結束..返回結果:" + respStr);
			post.releaseConnection();

		} catch (Exception e) {
			logger.error(OPERATER_NAME, e);
		}
		long endTime = System.currentTimeMillis();
		logger.info(OPERATER_NAME + "共計耗時:" + (endTime - beginTime) + "ms");
		return respStr;
	}

}
2.測試類TestLZY.java
package com.project.test;

import java.net.MalformedURLException;
import java.net.URL;

import com.alibaba.fastjson.JSONObject;
import com.project.utils.HTTPUtils;

public class TestLZY {
	public static void main(String[] args) throws MalformedURLException {
		new TestLZY().gettoken();
		new TestLZY().sendMsg();
	}
	
	public void gettoken() throws MalformedURLException{
		String url = "http://192.168.0.1";
		String ss = HTTPUtils.post(new URL(url),  new JSONObject().toJSONString());
		System.out.println(ss);
	}
	
	public void sendMsg() throws MalformedURLException{
		String url = "http://192.168.0.1";
		JSONObject jsonOO = new JSONObject();
		JSONObject jsonO = new JSONObject();
		jsonO.put( "name","張興");
		jsonOO.put("actionType", "addYZ");
		jsonO.put("phone","13971449129");
		jsonO.put("extends1","1");
		jsonO.put("extends2","420683198108125111");
		jsonO.put("xiaoquName","梅苑小區");
		jsonO.put("xiaoquId","2");
		jsonO.put("danyuan","1樓1單元");
		jsonO.put("extends3","2");
		jsonO.put("houseno","0202");
		jsonOO.put("param", jsonO);
		
		String ss =  HTTPUtils.post(new URL(url),  jsonO.toJSONString());
		System.out.println(ss);
	}
}