「All right reserved, any unauthorized reproduction or transfer is prohibitted」
        
      本人在做接口测试的过程中,之前写了一个用字符串替换的方法来处理 get 接口的参数拼接,后来优化了这个方法,兼容了中文字符提示非法字符的情况,使用了 java 自带的 urlencode 方法。包括第一种方法,之前传的是 json。分享代码,供大家参考。
更新:
/**
 * 方法已重载,获取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  表示请求地址
 * @param args 表示传入数据
 * @return 返回get对象
 */
public static HttpGet getHttpGet(String url) {
    return new HttpGet(url);
}
其中 changjsontoarguments 方法如下:
/**
     * 把json数据转化为参数,为get请求和post请求stringentity的时候使用
     *
     * @param argument 请求参数,json数据类型,map类型,可转化
     * @return 返回拼接参数后的地址
     */
    public static String changeJsonToArguments(JSONObject argument) {
        Set<String> keys = argument.keySet();
        for (String key : keys) {
            String value = argument.getString(key);
            argument.put(key, urlEncoderText(value));
        }
        String one = argument.toString();
        String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", "");
        return two;
    }
--------------------------分割线------------------------------
/**
 * 把json数据转化为参数,为get请求和post请求stringentity的时候使用
 * 
 * @param argument
 *            请求参数,json数据类型,map类型,可转化
 * @return 返回拼接参数后的地址
 */
@SuppressWarnings("unused")
private String changeJsonToArguments(JSONObject argument) {
    String one = argument.toString();
    String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", "");
    return two;
}
private String changeJsonToArguments(Map<String, String> apiCase) {
    Set<String> keys = apiCase.keySet();
    StringBuffer arg = new StringBuffer("?");
    for (String key : keys) {
        arg.append((key) + "=" + urlEncoderText(apiCase.get(key)) + "&");
    }
    return arg.deleteCharAt(arg.length() -1).toString();//此处为了兼容case内容为空
}
/**
     * 把json数据转化为参数,为get请求和post请求stringentity的时候使用
     * 
     * @param argument
     *            请求参数,json数据类型,map类型,可转化
     * @return 返回拼接参数后的地址
     */
    @SuppressWarnings("unused")
    private String changeJsonToArguments(JSONObject argument) {
        String one = argument.toString();
        String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", "");
        return two;
    }
    private String changeJsonToArguments(Map<String, String> apiCase) {
        Set<String> keys = apiCase.keySet();
        StringBuffer arg = new StringBuffer("?");
        for (String key : keys) {
            arg.append((key) + "=" + urlEncoderText(apiCase.get(key)) + "&");
        }
        return arg.deleteCharAt(arg.length() -1).toString();//此处为了兼容case内容为空
    }
/**
 * url进行转码,常用于网络请求
 * 
 * @param text
 *            需要加密的文本
 * @return 返回加密后的文本
 */
public String urlEncoderText(String text) {
    String result = "";
    try {
        result = java.net.URLEncoder.encode(text, "utf-8");
    } catch (UnsupportedEncodingException e) {
        output("数据格式错误!");
        e.printStackTrace();
    }
    return result;
}
技术类文章精选
- java 一行代码打印心形
- Linux 性能监控软件 netdata 中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在 Linux 命令行界面愉快进行性能测试
- 图解 HTTP 脑图
- 如何测试概率型业务接口
- httpclient 处理多用户同时在线
- 将 swagger 文档自动变成测试代码
- 五行代码构建静态博客
- httpclient 如何处理 302 重定向
- 基于 java 的直线型接口测试框架初探
- Tcloud 云测平台 -- 集大成者
非技术文章精选
          TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
          除非获得原作者的单独授权,任何第三方不得转载标注了「All right reserved, any unauthorized reproduction or transfer is prohibitted」的内容,否则均视为侵权。
          具体请参见TesterHome 知识产权保护协议。
  
    如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
  
  
      No Reply at the moment.
    
    

 
        