美文网首页
接口测试-Java代码实现接口请求并封装

接口测试-Java代码实现接口请求并封装

作者: 蜗小稂 | 来源:发表于2018-10-24 16:29 被阅读0次

前言:

在接口测试和Java开发中对接口请求方法进行封装都非常有必要,无论是在我们接口测试的时候还是在开发自测,以及调用某些第三方接口时,都能为我们调用和调试接口提供便捷;

Java实现对http请求的封装

一,针对常见的json数据的http-post请求进行封装工具类的实现如下:

ackage com.nuanshui.frms.pre.demo.utils;


import com.nuanshui.frms.exchange.demo.utils.SSLProtocolSocketFactory;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.protocol.Protocol;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpRequestUtil
{
/**
 * HTTP请求
 * @param surl 接口请求url
 * @param json 接口请求body-json字符串
 *  
 * @return 接口返回结果
 */
    public static String sendJsonWithHttp(String surl, String json) throws Exception
    {
        URL url = new URL(surl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
        conn.setRequestMethod("POST");// 提交模式
        conn.setRequestProperty("Content-Length", json.getBytes().length + "");
        conn.setConnectTimeout(100000);// 连接超时单位毫秒 //
        conn.setReadTimeout(200000);// 读取超时 单位毫秒
        conn.setDoOutput(true);// 是否输入参数
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.connect();
        DataOutputStream out = new DataOutputStream(conn.getOutputStream());
        out.write(json.getBytes());
        out.flush();
        out.close();
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        StringBuffer sb = new StringBuffer();
        String line;
        while ((line = reader.readLine()) != null)
        {
            sb.append(line);
        }
        reader.close();
        conn.disconnect();

        return sb.toString();
    }
}

二,观察系统中的接口,我们会发现除了后面的路径不一样,其根路径都是一样的,于是我们可以将路径拆分为根路径+详细子路径,这样我们进行环境切换时(即根目录切换)很方便,因为接口子路径一旦确定一般情况下不会再变更,所以可以像下面一样进行路径变量常量化,如下所示:

public class FrmsUtils {
   public final static String URL = "http://www.baidu.com/";
    public final static String QUERY_WHITELIST_URL = "whiteList";//白名单接口
}

三,现在我们已经完成了接口调用方法的封装和路径管理,我们现在只需要编写调用某个http接口的实际调用类了,直接使用HttpRequestUtil.sendJsonWithHttp()方法就能进行调用哦,详细使用方式如下:

import com.nuanshui.frms.pre.demo.FrmsUtils;
import com.nuanshui.frms.pre.demo.utils.HttpRequestUtil;
import com.nuanshui.frms.pre.demo.utils.HttpUtils;
import com.nuanshui.frms.pre.demo.utils.KeyAndValue;
import net.sf.json.JSONObject;
import sun.applet.Main;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;

public class WhiteListQueryDemo {

    public static void main(String[] args) {
        String validatePhone="1562397271";//接口入参
        String res;
        try {
           JSONObject jsonObject= new JSONObject();//new一个json对象
           jsonObject.put("phoneNum",validatePhone);//将入参添加进去,多个参数就put多个
            System.out.println(jsonObject.toString());//将json对象转换成字符串
            System.out.println("URL: "+FrmsUtils.URL+ FrmsUtils.QUERY_WHITELIST_URL);//打印组合后的路径;
            res = HttpRequestUtil.sendJsonWithHttp(FrmsUtils.URL+ FrmsUtils.QUERY_WHITELIST_URL,jsonObject.toString());//调用封装的请求方法,实现接口请求
            System.out.println(res);//打印接口返回结果
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行main方法就能成功调用接口啦在日志中就能查看接口返回结果哦

上面一个接口的调用,可能封装的优点还没显现,但当我们需要调用另一个接口时,调用该方法时,优点就很明显了,我们只需要同二一样再编写一个类,就能实现了,是不是发现封装请求方法后,编写一个调用接口的请求类变得很简单了呢~

以上~对你有帮助的话,点个喜欢❤️吧~~

欢迎关注我的同名简书,博客,Github~~~

相关文章

  • 接口测试-Java代码实现接口请求并封装

    前言: 在接口测试和Java开发中对接口请求方法进行封装都非常有必要,无论是在我们接口测试的时候还是在开发自测,以...

  • JAVA 手动实现LinkedList

    JAVA 手动实现LinkedList 节点 List接口 迭代器接口 实现 测试

  • anyproxy(接口mock功能)

    前言 接口测试中,经常会拦截请求并修改服务端响应,实现接口mock功能。如果要实现对接的第三方接口,但是并没有提供...

  • Servlet 实例

    Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。W...

  • java语法:02_接口

    一、接口的目的 接口的目的是规范代码,在写代码之前,先通过接口规定要写哪些方法 二、定义接口 实现接口 3. 测试

  • Python+request+unittest实现接口测试框架集

    1、为什么要写代码实现接口自动化 大家知道很多接口测试工具可以实现对接口的测试,如postman、jmeter、f...

  • Python+request+unittest实现接口测试框架集

    1、为什么要写代码实现接口自动化 大家知道很多接口测试工具可以实现对接口的测试,如postman、jmeter、f...

  • 后羿框架-公共子框架-报文封装

    请求报文封装 请求报文问题描述 框架基于spring-web实现的REST服务接口,接口调用时可基于HTTP的ur...

  • JDK静态代理示例代码

    JDK静态代理示例代码 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 1、业务接口 2、业务实现类...

  • 接口处理封装请求模块

    对接口后端的接口文档之后 封装请求模块 项目中我们需要通过接口进行数据请求,为了便于操作,要封装用于请求操作的函数...

网友评论

      本文标题:接口测试-Java代码实现接口请求并封装

      本文链接:https://www.haomeiwen.com/subject/qcuttqtx.html