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

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

本站工具,在线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模拟请求测试工具【更新说明】
HTTP模拟请求有几种方法
HTTP模拟请求有几种方法
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 返回值乱码解决
多说迁移,Java开发仿自主实现评论(一)
最新文章
如何使用终端检查Linux上的内存使用情况 5
JavaScript对象详细剖析 73
Python print() 函数 123
PHP if/else/elseif 语句 143
HTML5 Canvas弧线教程 103
Java赋值运算符 130
XML内部实体和外部实体 231
Java面向对象编程概念 222
PHP回显语句 142
Linux—文件树 176
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 683327
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674832
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 603680
免费天气API,天气JSON API,不限次数获取十五天的天气预报 584078
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 553241
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509516
Elasticsearch教程(四) elasticsearch head 插件安装和使用 480144
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 265345
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244346
Elasticsearch教程(一),全程直播(小白级别) 225754
支付扫码

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

查看我的收藏

正在加载... ...