前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >拼接GET请求的参数

拼接GET请求的参数

作者头像
FunTester
发布2019-09-25 09:53:48
3.8K0
发布2019-09-25 09:53:48
举报
文章被收录于专栏:FunTesterFunTester

本人在做接口测试的过程中,之前写了一个用字符串替换的方法来处理get接口的参数拼接,后来优化了这个方法,兼容了中文字符提示非法字符的情况,使用了java自带的urlencode方法。包括第一种方法,之前传的是json。分享代码,供大家参考。

更新:

代码语言:javascript
复制
    /**
     * 方法已重载,获取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方法如下:

代码语言:javascript
复制
/**
     * 把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;
    }

--------------------------分割线------------------------------

代码语言:javascript
复制
    /**
     * 把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内容为空
    }
代码语言:javascript
复制
/**
     * 把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内容为空
    }
代码语言:javascript
复制
    /**
     * 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;
    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档