org.apache.httpcomponents
httpclient
4.2
public class HttpUtil {
private static DefaultHttpClient defaultHttpClient = null;
public static CookieStore cookieStore;
public static final int CONNECTIONTIMEOUT = 300000;
public static final int SOCKETTIMEOUT = 300000;
/**
* 带cookie的get提交
*
* @param urlpath
* @param encoding
* @return
*/
public static String doHttpGetSetCookie(String urlpath, String encoding) {
HttpGet request = new HttpGet(urlpath);
try {
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, CONNECTIONTIMEOUT);
HttpConnectionParams.setSoTimeout(httpParams, SOCKETTIMEOUT);
if (defaultHttpClient == null) {
defaultHttpClient = new DefaultHttpClient(httpParams);
}
if (cookieStore != null) {
defaultHttpClient.setCookieStore(cookieStore);
}
HttpResponse response = defaultHttpClient.execute(request);
cookieStore = defaultHttpClient.getCookieStore();
if (response.getStatusLine().getStatusCode() == 200) {
Header str = response.getLastHeader("content-type");
if(str!=null&&str.toString().contains("text/html")){
System.out.println(response.getLastHeader("content-type"));
}
String string = EntityUtils.toString(response.getEntity(), encoding);
return string;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 带cookie的post提交
*
* @param uri
* @param params
* @return
*/
public static String doHttpPostSetCookie(String uri, List params) {
HttpPost hp = new HttpPost(uri);
try {
if (params != null) {
hp.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
}
if (defaultHttpClient == null) {
defaultHttpClient = new DefaultHttpClient();
}
defaultHttpClient.getParams().setParameter("http.connection.timeout", CONNECTIONTIMEOUT);
defaultHttpClient.getParams().setParameter("http.socket.timeout", SOCKETTIMEOUT);
if (cookieStore != null) {
defaultHttpClient.setCookieStore(cookieStore);
}
HttpResponse response = defaultHttpClient.execute(hp);
cookieStore = defaultHttpClient.getCookieStore();
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
String string = EntityUtils.toString(entity,"UTF-8");
return string;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
login();
}
private static void login() {
List params = new ArrayList();
params.add(new BasicNameValuePair("j_username", "admin"));
params.add(new BasicNameValuePair("j_password", "123456"));
String str = HttpUtil.doHttpPostSetCookie("http://127.0.0.1/j_spring_security_check",params);
System.out.println(str);
}
这个Java类展示了如何使用Apache HttpClient库进行带cookie的GET和POST请求。它设置了连接超时和socket超时,并处理HTTP响应。登录方法通过POST提交用户名和密码,然后获取响应。
865

被折叠的 条评论
为什么被折叠?



