首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >拼接GET请求的参数

拼接GET请求的参数

作者头像
FunTester
发布于 2019-09-25 01:53:48
发布于 2019-09-25 01:53:48
4.5K00
代码可运行
举报
文章被收录于专栏:FunTesterFunTester
运行总次数:0
代码可运行

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

更新:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 方法已重载,获取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
代码运行次数:0
运行
AI代码解释
复制
/**
     * 把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
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 把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
代码运行次数:0
运行
AI代码解释
复制
/**
     * 把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
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java爬虫下载千张美女图片!
目的 爬取搜狗图片上千张美女图片并下载到本地 准备工作 爬取地址:https://pic.sogou.com/pics?query=%E7%BE%8E%E5%A5%B3 分析 打开上面的地址,按F1
Java团长
2021/03/12
1.3K0
Java爬虫下载千张美女图片!
将swagger文档自动变成测试代码
在看过一本《代码不朽》的书之后,深受启发,要编写高质量的代码,可维护性一定要弄好,经过尝试,已经将原来的magic()方法修改成为N个短方法,代码逻辑一目了然,分享解耦之后的代码。
FunTester
2019/08/19
2.5K0
Java调用第三方接口示范
【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Post方式的有参和无参调用】:
Java廖志伟
2021/01/29
1.5K0
秒懂HTTPS接口(接口测试篇)
在秒懂HTTPS接口(实现篇)中我们通过Java实现了一个简单的HTTPS项目示例,下面我们来测试下我们上面这个HTTPS接口(Java版)
高楼Zee
2019/07/17
3.5K0
秒懂HTTPS接口(接口测试篇)
封装httpClient工具类进行get、post、put、delete的http接口请求,可添加请求头与参数,支持多线程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157763.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/18
3.1K0
【HttpClientUtil完整的工具类】
package com.test.test.utils; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.httpclient.HttpStatus; import org.apache.http.NameValuePair; import org.apa
用户5640963
2019/07/25
9.4K0
自动化测试项目基础--视频讲解
今天开始分享如何写一个自动化测试项目。对于一个长期的自动化测试项目,我的思路如下:现有一个项目的基类,实现对获取请求对象和发送解析请求对象的封装,自定义用户信息(例如id,uid,password)以及验证信息,自定义header和cookie处理方法,自定义通用验证方法和获取业务响应状态码方法,以及包括一些其他需要自定义的功能。然后每个业务的模块类继承于这个基类,就只专注于接口的参数和响应信息即可。
FunTester
2020/04/02
3980
GET请求实践--测试框架视频讲解
讲完json对象的操作,今天开始正式进入正题——接口测试。这里的接口指的是HTTP接口测试,主要的请求方法是GET和POST,下面开始讲GET请求的测试实践。
FunTester
2020/04/03
5030
HttpClient使用不当,服务挂了,是时候系统学习一下了
事件一:联调微信支付接口,用到HttpClient,花时间整理了一番。如果有一篇文章,读一读就可以掌握HttpClient 80%的内容,再有可以直接用的Demo,下次再遇到是不是就可以非常容易集成了?这篇便是这篇文章的目标之一。
程序新视界
2021/12/20
2K0
HttpClient技术
HttpClient 一、介绍 简介 坐标 二、应用 发送get请求不带参数 发送get请求带参数 发送post请求不带参数 发送post请求带参数 发送post请求带json类型参数 三、HTTPClient工具类的使用 工具类代码 一、介绍 简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、 功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 HTTP 协议可能是现在 Inter
时间静止不是简史
2020/07/25
1.9K0
HTTP接口测试基础【FunTester框架教程】
今天继续编写FunTester测试框架的教程,主要内容是HTTP接口测试基础,分为请求(GET、POST、PUT等)、请求头、cookie、响应、JSON以及资源释放。
FunTester
2021/09/14
6720
获取HTTP请求对象--测试框架视频讲解
之前有了个序FunTester测试框架视频讲解(序),反响不错,今天来讲讲测试框架中另外一个核心的类FanLibrary中获取HttpRequestBase对象的方法。
FunTester
2020/03/23
7090
SpringCloud-Eureka[优雅停服]
  本文我们来介绍下在Eureka中我们如何比较方便的停止服务,并且将服务从注册中心中移除
用户4919348
2019/06/05
1.6K0
SpringCloud-Eureka[优雅停服]
HttpClient-Get请求、Post请求
有参数,请求链接为url(http://localhost:8083/getdemo2)
wangmcn
2022/07/25
3.8K0
HttpClient-Get请求、Post请求
分布式性能测试框架用例方案设想(一)
在近期工作规划中,分布式压测框架提上日程,目前「FunTester」已经具备了一些分布式压测中用到的功能。
FunTester
2021/06/23
8410
HTTP 请求工具类
坐标 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.1</version> <classifier>jdk15</classifier> </dependency> 工具类 package com.baomidou.springboot.uti
高大北
2022/06/14
1.1K0
基于java的直线型接口测试框架初探
在使用java语言作为接口测试的过程中,发现java语言的简洁性的确不如脚本语言,如python,很多功能python一行代码几个方法就能搞定,java需要几行,而且有时候并不利于理解。最近接触到了一个词“直线型”代码。看了之后有所感觉,重新写了一个直线型代码风格的接口请求框架。
FunTester
2019/09/10
5570
Java实现调用HTTP请求的几种常见方式
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/09/19
6.3K0
Java实现调用HTTP请求的几种常见方式
java使用httpclient调用第三方接口
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141981.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
1K0
银商TMS平台秘钥下载工具
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaapplication3.utils; import com.alibaba.fastjson.JSON; impo
杨永贞
2020/08/04
7680
相关推荐
Java爬虫下载千张美女图片!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档