接口測試-Java代碼實現接口請求並封裝


前言
在接口測試和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~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM