Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具

JSON 2016-08-22 16:12:04 138510

本站工具,在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具 后台所有实现代码。支持的请求协议有:PostGetDeletePutTraceHeadOptions。特色是加了请求头的输入,方便一些跨域,和保持同一个 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", 
						"https://www.sojson.com");
			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在线解析

原文地址:https://www.sojson.com/blog/123.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具【更新说明】
Java模拟WSS websocket ssl请求Java WSS模拟请求代码示例
Http Get 请求Java 请求工具类封装
Springboot HTTP请求,Springboot HTTP 请求 Demo。Get/Post
Springboot HTTP Get/Post 请求讲解,Springboot几行代码完成Http请求
Mac 安装 JMeter,JMeter 下载,JMeter Http 压力测试【图解】
JavaHTTP请求乱码解决,GZIP 返回值乱码解决
为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
Java Cookie 操作工具
多说迁移,Java开发仿自主实现评论(一)
最新文章
PHP变量剖析 4
SQL全外连接剖析 119
SQL自然连接剖析 147
springboot启动原理 245
SQL右连接【RIGHT JOIN】详解及图解 450
SQL左链接【LEFT JOIN】详解及图解 357
SQL非等值连接剖析 262
SQL等链接剖析 291
SQL内连接详解及图解 385
python之numpy常用的100种数值相关方法及代码示例 231
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 679222
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674561
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 599008
免费天气API,天气JSON API,不限次数获取十五天的天气预报 565182
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 551699
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509186
Elasticsearch教程(四) elasticsearch head 插件安装和使用 479635
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 262798
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244092
Elasticsearch教程(一),全程直播(小白级别) 225115
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...