后面我們需要設計測試用例並執行post請求,因此需要對上一篇的post的請求進行封裝,允許不同參數的用例能夠執行此方法
將Java接口自動化測試(二) 的內容做以修改:
1、首先post的請求我們接收的參數是一個map類型參數
2、返回值類型是一個JSON類型
3、根據具體的需求設計參數和返回值類型,具體post請求執行的過程都是一樣的
package com.test.httpclient; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.Map; public class HttpClientPost { //POST登錄方法 public JSONObject LoginPost(Map<String, Object> map) throws IOException { //創建一個獲取連接客戶端的工具 CloseableHttpClient httpClient = HttpClients.createDefault(); //創建Post請求 HttpPost httpPost = new HttpPost("http://localhost:8081/api/login"); //添加請求頭 httpPost.addHeader("Content-Type","application/json;charset=UTF-8"); //封裝請求參數,將map集合轉換成json格式 JSONObject jsonString = new JSONObject(map); //使用StringEntity轉換成實體類型 StringEntity entity = new StringEntity(jsonString.toString(),"UTF-8"); //將封裝的參數添加到Post請求中 httpPost.setEntity(entity); //執行請求 CloseableHttpResponse response = httpClient.execute(httpPost); //獲取響應的實體 HttpEntity responseEntity = response.getEntity(); //轉化成字符串 String entityString = EntityUtils.toString(responseEntity); //轉換成JSON格式輸出 JSONObject result = JSONObject.parseObject(entityString); response.close(); httpClient.close(); return result; } }