Java 實現在線HTTP接口測試 - HTTP GET/POST模擬請求測試工具

soゝso 2016-08-22 16:12:04 67604

本站工具,在線HTTP接口測試 - HTTP GET/POST模擬請求測試工具 后臺所有實現代碼。支持的請求協議有:Post、GetDelete、Put、Trace、Head、Options。特色是加了請求頭的輸入,方便一些跨域,和保持同一個 session  。

工具截圖:

下面上 Java  代碼:

/**
	 * 模擬各種Http請求
	 * @param bo
	 * @return
	 */
	public static Map<String,Object> request(HttpRequestBo bo){
		
		Map<String,Object> map = new HashMap<String,Object>();
		double begin = System.currentTimeMillis();
		String type = bo.getType();
		String url  = bo.getUrl();
		HttpMethodBase method = null;
		try {
			//匹配請求
			if("Post".equals(type)){
				method = new PostMethod(url);
			}else if("Get".equals(type)){
				method = new GetMethod(url);
			}else if("Delete".equals(type)){
				method = new DeleteMethod(url);
			}else if("Put".equals(type)){
				method = new PutMethod(url);
			}else if("Trace".equals(type)){
				method = new TraceMethod(url);
			}else if("Head".equals(type)){
				method = new HeadMethod(url);
			}else if("Options".equals(type)){
				method = new OptionsMethod(url);
			}
			
			HttpClient client = new HttpClient();
			//請求超時
			client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 556000); 
			//讀取超時
			client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 555000);
			client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");
			client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
			
			method.setRequestHeader("Connection","close");
			method.setRequestHeader("Referer", 
						"http://www.5019916.live");
			method.setRequestHeader("User-Agent", 
						"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0");
	
			//設置參數
			String[] keys = bo.getKeys(),values = bo.getValues();
			if(StringUtils.isNotBlank(keys,values)){
				NameValuePair[] params = new NameValuePair[keys.length];
				for (int i = 0; i < keys.length; i++) {
					params[i] = new NameValuePair(keys[i], values[i]);
				}
				method.setQueryString(params);
			}
			//設置請求頭 和上面方法一致,如果一樣,那么就覆蓋。
			String[] headKeys = bo.getHeadKeys(),headValues = bo.getHeadValues();
			for (int i = 0;StringUtils.isNotBlank(headKeys,headValues) && i < headKeys.length; i++) {
				method.setRequestHeader(headKeys[i], headValues[i]);
			}
			
			int status = client.executeMethod(method);
			map.put("status",status);
			
			Header[] heads = method.getResponseHeaders();
			//獲取請求的Host,用于IP解析
			String host = method.getHostConfiguration().getHost();
			
			StringBuffer sb = new StringBuffer("");
			for (Header header : heads) {
					sb.append(header.getName())
						.append(" : ")
							.append(header.getValue())
								.append("\r\n");
			}
			//頭信息
			map.put("head", sb.toString());
			String result = method.getResponseBodyAsString();
			map.put("result", result);
			String ip = "未知";
			try {
				InetAddress iAddress=InetAddress.getByName(host);
				ip = iAddress.getHostAddress();
				map.put("host", ip);
			} catch (Exception e) {
				LoggerUtils.fmtError(HttpManager.class, e, "獲取IP地址失敗,域名:[%s]", host);
			}
		} catch (UnknownHostException e) {
			//域名錯誤
			map.put("message", "請輸入正確的網址");
			LoggerUtils.fmtError(HttpManager.class, e, "網址異常[%s]", url);
		} catch (SocketTimeoutException e) {
			//超時
			map.put("message", "請求地址超時");
			LoggerUtils.fmtError(HttpManager.class, e, "請求地址超時[%s]", url);
		} catch (Exception e) {
			//其他異常
			map.put("message", "請求出現未知異常,請重試!");
			LoggerUtils.fmtError(HttpManager.class, e, "請求出現未知異常,請重試![%s]", url);
		}
		double end = System.currentTimeMillis();
		map.put("time", (end - begin) / 1000);
		return map;
		
	}

LoggerUtils (Log輸出)、StringUtils (字符串操作類,你換做Apache 即可)、工具類自行處理就可以了。

有什么問題加群解決。

版權所屬:SO JSON在線解析

原文地址:http://www.5019916.live/blog/123.html

轉載時必須以鏈接形式注明原始出處及本聲明。

本文主題:

如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。

關于作者
一個低調而悶騷的男人。
相關文章
在線HTTP接口測試 - HTTP GET/POST模擬請求測試工具【更新說明】
Http Get 請求,Java 請求工具類封裝
Springboot HTTP請求,Springboot HTTP 請求 Demo。Get/Post
Mac 安裝 JMeter,JMeter 下載,JMeter Http 壓力測試【圖解】
JavaHTTP請求亂碼解決,GZIP 返回值亂碼解決
為什么很多第三方接口,都改成了基于http,直接傳遞json數據的方式來代替webservice?
多說遷移,Java開發仿自主實現評論(一)
Java客戶端Jedis 對Redis的的八種調用方式(事務、管道、分布式)介紹及測試
Java Cookie 操作工具
由于多說關閉,多說源碼不開放,Java仿多說評論系統實現(二)
最新文章
Elasticsearch 好消息, X-Pack的開源:第一階段完成 14048
文字轉語音接口,支持漢字、英語,文字轉音頻開放接口,還支持翻譯播放 7590
Spring JPA查詢,JPA 根據方法名字查詢詳細介紹 27496
Springboot JPA 執行原生sql ,自定義SQL占位符增加參數 45772
Java 隨機從 List 隨機獲取多個不重復對象,Mysql 隨機10條數據 13405
Linux 安裝 Redis 詳細步驟講解 4592
Javascript 生成UUID,Java生成UUID 8415
Maven的Mirror和Repository 的詳細講解 33415
JDK1.7中新增自動釋放資源接口AutoCloseable講解 13506
對Java的常用對象(POJO、DTO、PO、BO、VO、DAO)詳細解釋及應用場景 16807
最熱文章
Springboot JPA 執行原生sql ,自定義SQL占位符增加參數 45772
在windows上安裝redis并設置密碼,IP綁定【提供安裝包】 35730
Maven的Mirror和Repository 的詳細講解 33415
Spring JPA查詢,JPA 根據方法名字查詢詳細介紹 27496
最新VS2012破解 序列號,vs2012旗艦版密鑰序列號【收藏】 18805
對Java的常用對象(POJO、DTO、PO、BO、VO、DAO)詳細解釋及應用場景 16807
Elasticsearch操作數據后馬上更新的辦法 14100
Elasticsearch 好消息, X-Pack的開源:第一階段完成 14048
JDK1.7中新增自動釋放資源接口AutoCloseable講解 13506
Java 隨機從 List 隨機獲取多個不重復對象,Mysql 隨機10條數據 13405

騷碼加入我們 / 千人QQ群:259217951

入群需要5元為的是沒有垃圾廣告,如果沒有QQ錢包,可以加群主拉進。

二維碼生成 來自 >> 二維碼生成器。

支付掃碼

所有贊助/開支都講公開明細,用于網站維護:贊助名單查看

查看我的收藏

正在加載... ...

河南十一选五开奖查询 极速赛车一天多少期 河北快三预测号码今天 加拿大28走势图 黑龙江福彩p62走势图 云南时时彩走势图 炒股软件代理 双色球开奖历史第一期 贵州快3最大号码是什么 绝对权重 中国赛车