获取HTTP请求对象--测试框架视频讲解

2022年01月15日 阅读数:2
这篇文章主要向大家介绍获取HTTP请求对象--测试框架视频讲解,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

以前有了个序FunTester测试框架视频讲解(序)​,反响不错,今天来说讲测试框架中另一个核心的类​​FanLibrary​​​中获取​​HttpRequestBase​​对象的方法。git

主要分为​​HTTPget​​​和​​HTTPpost​​​,参数也分​​json​​​和​​form​​形式,还有文件传输等等。下期讲讲发送请求和解析响应结果。json


访问gitee地址框架

代码以下:ide

/**
* 方法已重载,获取get对象
* <p>方法重载,主要区别参数,会自动进行urlencode操做</p>
*
* @param url 表示请求地址
* @param args 表示传入数据
* @return 返回get对象
*/
public static HttpGet getHttpGet(String url, JSONObject args) {
if (args == null || args.size() == 0) return getHttpGet(url);
String uri = url + changeJsonToArguments(args);
return getHttpGet(uri.replace(" ", ""));
}

/**
* 方法已重载,获取get对象
* <p>方法重载,主要区别参数,会自动进行urlencode操做</p>
*
* @param url 表示请求地址
* @return 返回get对象
*/
public static HttpGet getHttpGet(String url) {
return new HttpGet(url);
}

/**
* 获取post对象,以form表单提交数据
* <p>方法重载,文字信息form表单提交,文件信息二进制流提交,具体参照文件上传的方法主食,post请求能够不须要参数,暂时不支持其余参数类型,若是是公参须要在url里面展现,须要传一个json对象,通常默认args为get公参,params为post请求参数</p>
*
* @param url 请求地址
* @param params 请求数据,form表单形式设置请求实体
* @return 返回post对象
*/
public static HttpPost getHttpPost(String url, JSONObject params) {
HttpPost httpPost = getHttpPost(url);
setFormHttpEntity(httpPost, params);
httpPost.addHeader(HttpClientConstant.ContentType_FORM);
return httpPost;
}

/**
* 获取httppost对象,没有参数设置
* <p>方法重载,文字信息form表单提交,文件信息二进制流提交,具体参照文件上传的方法主食,post请求能够不须要参数,暂时不支持其余参数类型,若是是公参须要在url里面展现,须要传一个json对象,通常默认args为get公参,params为post请求参数</p>
*
* @param url
* @return
*/
public static HttpPost getHttpPost(String url) {
return new HttpPost(url.replace(" ", ""));
}

/**
* 获取httppost对象,json格式对象,传参时手动tostring
* <p>新重载方法,适应post请求json传参,估计utf-8编码格式</p>
*
* @param url
* @param params
* @return
*/
public static HttpPost getHttpPost(String url, String params) {
HttpPost httpPost = getHttpPost(url);
httpPost.setEntity(new StringEntity(params, DEFAULT_CHARSET.toString()));
httpPost.addHeader(HttpClientConstant.ContentType_JSON);
return httpPost;
}

/**
* * 获取httppost对象,json格式对象,传参时手动tostring
* <p>新重载方法,适应post请求json传参</p>
*
* @param url
* @param args
* @return
*/
public static HttpPost getHttpPost(String url, JSONObject args, String params) {
return getHttpPost(url + changeJsonToArguments(args), params);
}

/**
* 获取 httppost 请求对象
* <p>方法重载,文字信息form表单提交,文件信息二进制流提交,具体参照文件上传的方法主食,post请求能够不须要参数,暂时不支持其余参数类型,若是是公参须要在url里面展现,须要传一个json对象,通常默认args为get公参,params为post请求参数</p>
*
* @param url 请求地址
* @param args 请求地址参数
* @param params 请求参数
* @return
*/
public static HttpPost getHttpPost(String url, JSONObject args, JSONObject params) {
return getHttpPost(url + changeJsonToArguments(args), params);
}


/**
* 获取 httpPost 对象
* <p>方法重载,文字信息form表单提交,文件信息二进制流提交,具体参照文件上传的方法主食,post请求能够不须要参数,暂时不支持其余参数类型,若是是公参须要在url里面展现,须要传一个json对象,通常默认args为get公参,params为post请求参数</p>
*
* @param url 请求地址
* @param args 请求通用参数
* @param params 请求参数,其中二进制流必须是 file
* @param file 文件
* @return
*/
public static HttpPost getHttpPost(String url, JSONObject args, JSONObject params, File file) {
return getHttpPost(url + changeJsonToArguments(args), params, file);
}

/**
* 获取 httpPost 对象
* <p>方法重载,文字信息form表单提交,文件信息二进制流提交,具体参照文件上传的方法主食,post请求能够不须要参数,暂时不支持其余参数类型,若是是公参须要在url里面展现,须要传一个json对象,通常默认args为get公参,params为post请求参数</p>
*
* @param url 请求地址
* @param params 请求参数,其中二进制流必须是 file
* @param file 文件
* @return
*/
public static HttpPost getHttpPost(String url, JSONObject params, File file) {
HttpPost httpPost = getHttpPost(url);
setMultipartEntityEntity(httpPost, params, file);
return httpPost;
}

/**
* 设置二进制流实体,params 里面参数值为 file
*
* @param httpPost httpPsot 请求
* @param params 请求参数
* @param file 文件
*/
private static void setMultipartEntityEntity(HttpPost httpPost, JSONObject params, File file) {
logger.debug("上传文件名:{}", file.getAbsolutePath());
String fileName = file.getName();
InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
logger.warn("读取文件失败!", e);
}
Iterator<String> keys = params.keySet().iterator();// 遍历 params 参数和值
MultipartEntityBuilder builder = MultipartEntityBuilder.create();// 新建MultipartEntityBuilder对象
while (keys.hasNext()) {
String key = keys.next();
String value = params.getString(key);
if (value.equals("file")) {
builder.addBinaryBody(key, inputStream, ContentType.create(HttpClientConstant.CONTENTTYPE_MULTIPART_FORM), fileName);// 设置流参数
} else {
StringBody body = new StringBody(value, ContentType.create(HttpClientConstant.CONTENTTYPE_TEXT, DEFAULT_CHARSET));// 设置普通参数
builder.addPart(key, body);
}
}
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
}

  • 郑重声明:公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。