java中发送请求的两个问题,发送请求并且将返回的cookie进行提取;
public static String sendPostGetCookie(String urlPath, String body) throws Exception {
OutputStreamWriter out = null;
String headerField = "";
try {
URL url = new URL(urlPath);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
// 发送POST请求必须设置为true
conn.setDoOutput(true);
conn.setDoInput(true);
//设置连接超时时间和读取超时时间
conn.setConnectTimeout(10000);
conn.setReadTimeout(10000);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
out = new OutputStreamWriter(conn.getOutputStream());
// POST的请求参数写在正文中
out.write("name=张三&");
out.write("password=5201314&");
out.flush();
out.close();
headerField = conn.getHeaderField("set-cookie");
} catch (Exception e) {
e.printStackTrace();
}
return headerField.split(";")[0].split("=")[1];
}
在发送HTTP请求的时候装入cookie和boody
public static String sendPostByCookie(String url, String body, String cookies) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json");
//写入cookie
httpPost.addHeader(HttpHeaders.COOKIE, "cookieName=" + cookies);
//写入body
httpPost.setEntity(new StringEntity(body, Consts.UTF_8));
//执行请求
CloseableHttpResponse response = httpClient.execute(httpPost);
System.out.println(response.toString());
HttpEntity entity = response.getEntity();
String responseContent = EntityUtils.toString(entity, Consts.UTF_8);
response.close();
httpClient.close();
return responseContent;
}