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); } } }