HttpClient接口測試之會話保持html
HttpClient4.X自帶會話保持功能,使用同一個HttpClient未關閉的鏈接便可保持登錄會話,若是多個HttpClient想要使用一個登錄會話,則須要保存會話信息,其中一種方法是使用HttpClientContext。
import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; import org.junit.Test; import com.test.tools.Regular; public class HttpClientTest { String loginUrl = "http://**.***.com/user/login.do"; private static HttpContext localContext = new BasicHttpContext(); private static HttpClientContext context = HttpClientContext.adapt(localContext); @Test public void Test() throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); try { // 模擬表單 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username", "admin")); params.add(new BasicNameValuePair("password", "admin")); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8"); HttpPost httpPost = new HttpPost(loginUrl); httpPost.setEntity(entity); // 將HttpClientContext傳入execute()中 CloseableHttpResponse response = httpClient.execute(httpPost, context); try { HttpEntity responseEntity = response.getEntity(); System.out.println(EntityUtils.toString(responseEntity)); } finally { response.close(); } } finally { httpClient.close(); } CloseableHttpClient httpClient2 = HttpClients.createDefault(); try { //進入首頁 HttpGet httpGet = new HttpGet("http://**.***.com/front/investmentList.html"); // 設置相同的HttpClientContext CloseableHttpResponse response = httpClient2.execute(httpGet, context); try { HttpEntity entity = response.getEntity(); System.out.println("**************************"); String aString =EntityUtils.toString(entity); System.out.println(aString); //正則提取響應信息中的用戶名 String bsString = "loginName = \"(.+?)\""; Regular regular = new Regular(); System.out.println(regular.getRegular(aString, bsString)); } finally { response.close(); } } finally { httpClient2.close(); } } } |
經過這種方式能夠進行接口測試,也能夠加入斷言事務,添加多線程併發進行接口性能測試。