public class MyCookiesForGet {
private String url;
private ResourceBundle bundle;
//用来存储cookies信息的变量
private CookieStore cookieStore;
@BeforeTest
public void beforeTest(){
bundle = ResourceBundle.getBundle("application", Locale.CHINA);
url = bundle.getString("test.url")+bundle.getString("getCookie.uri");
}
@Test
public void test1() throws IOException {
String result;
cookieStore = new BasicCookieStore();
HttpGet get = new HttpGet(this.url);
CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
HttpResponse response = client.execute(get);
result = EntityUtils.toString(response.getEntity(),"utf-8");
System.out.println(result);
// 获取cookies信息
List<Cookie> cookies = cookieStore.getCookies();
for(Cookie cookie:cookies){
String name = cookie.getName();
String value = cookie.getValue();
System.out.println("cookies key ="+name+",cookies value ="+value);
}
}
@Test(dependsOnMethods = {"test1"})
public void test2() throws IOException {
String uri = bundle.getString("test.get.with.cookies");
String testUrl = bundle.getString("test.url")+uri;
CookieStore cookieStore = new BasicCookieStore();
HttpGet httpGet = new HttpGet(testUrl);
// 设置cookies信息
//区别于上一个get请求client方法,这边使用this.cookieStore是直接使用存储的cookie
CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(this.cookieStore).build();
CloseableHttpResponse response = client.execute(httpGet);
// 获取响应的状态码
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("statusCode = " + statusCode);
if(statusCode == 200){
String result = EntityUtils.toString(response.getEntity(),"utf-8");
System.out.println(result);
}
}
}