java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
本站工具,在線HTTP接口測試 - HTTP GET/POST模擬請求測試工具后臺所有實現代碼。支持的請求協議有:Post、GetDelete、Put、Trace、Head、Options。特色是加了請求頭的輸入,方便一些跨域,和保持同一個session。
工具截圖:
下面上Java代碼:/**
* 模擬各種Http請求
* @param bo
* @return
*/
public static Map request(HttpRequestBo bo){
Map map = new HashMap();
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即可)、工具類自行處理就可以了。
有什么問題加群解決。
如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。
¥我需要走的更遠,點擊我 贊助。
如果還有疑問,點擊我加群,為你提供最好的解答。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 域名的分类有哪些
- 下一篇: BAPI和BDC使用小结