您的位置:首页 > 理论基础 > 计算机网络

HttpClient接口测试之会话保持

2016-12-07 15:19 253 查看
HttpClient接口测试之会话保持

HttpClient4.X自带会话保持功能,使用同一个HttpClient未关闭的连接即可保持登陆会话,如果多个HttpClient想要使用一个登陆会话,则需要保存会话信息,其中一种方法是使用HttpClientContext。


importjava.util.ArrayList;

importjava.util.List;

importorg.apache.http.HttpEntity;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.entity.UrlEncodedFormEntity;

importorg.apache.http.client.methods.CloseableHttpResponse;

importorg.apache.http.client.methods.HttpGet;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.client.protocol.HttpClientContext;

importorg.apache.http.impl.client.CloseableHttpClient;

importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.message.BasicNameValuePair;

importorg.apache.http.protocol.BasicHttpContext;

importorg.apache.http.protocol.HttpContext;

importorg.apache.http.util.EntityUtils;

importorg.junit.Test;


importcom.test.tools.Regular;


publicclassHttpClientTest{


StringloginUrl="http://**.***.com/user/login.do";

privatestaticHttpContextlocalContext=newBasicHttpContext();

privatestaticHttpClientContextcontext=HttpClientContext.adapt(localContext);


@Test

publicvoidTest()throwsException{

CloseableHttpClienthttpClient=HttpClients.createDefault();


try{

//模拟表单

List<NameValuePair>params=newArrayList<NameValuePair>();

params.add(newBasicNameValuePair("username","admin"));

params.add(newBasicNameValuePair("password","admin"));

UrlEncodedFormEntityentity=newUrlEncodedFormEntity(params,"UTF-8");


HttpPosthttpPost=newHttpPost(loginUrl);

httpPost.setEntity(entity);

//将HttpClientContext传入execute()中

CloseableHttpResponseresponse=httpClient.execute(httpPost,context);


try{

HttpEntityresponseEntity=response.getEntity();

System.out.println(EntityUtils.toString(responseEntity));


}finally{

response.close();

}

}finally{

httpClient.close();

}



CloseableHttpClienthttpClient2=HttpClients.createDefault();


try{

//进入首页

HttpGethttpGet=newHttpGet("http://**.***.com/front/investmentList.html");

//设置相同的HttpClientContext

CloseableHttpResponseresponse=httpClient2.execute(httpGet,context);

try{

HttpEntityentity=response.getEntity();

System.out.println("**************************");

StringaString=EntityUtils.toString(entity);

System.out.println(aString);

//正则提取响应信息中的用户名

StringbsString="loginName=\"(.+?)\"";

Regularregular=newRegular();

System.out.println(regular.getRegular(aString,bsString));


}finally{

response.close();

}

}finally{

httpClient2.close();

}


}

}

通过这种方式可以进行接口测试,也可以加入断言事务,添加多线程并发进行接口性能测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: