周末没事,研究了下HttpClient登陆kaixin网,网上文章很多,但所用HttpClient版本比较旧,将其代码更新到最新:
package com.cicc;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
public class LoginKaixin {
private static final String LOGON_SITE = "http://www.kaixin001.com/";
private static final int LOGON_PORT = 80;
// The HttpClient is used in one session
private static HttpResponse response;
private static DefaultHttpClient httpclient = new DefaultHttpClient();
public static void main(String[] args)throws Exception {
LoginKaixin kaixin=new LoginKaixin();
kaixin.printText();
}
private static String url="http://www.kaixin001.com/login/login.php";
private boolean login() {
HttpPost httpost = new HttpPost(url);
// All the parameters post to the web site
BasicNameValuePair ie = new BasicNameValuePair("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
BasicNameValuePair url = new BasicNameValuePair("url", "/home/");
BasicNameValuePair username = new BasicNameValuePair("email","xxxxx@163.com");
BasicNameValuePair password = new BasicNameValuePair("password", "yourpassword");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(ie);
nvps.add(url);
nvps.add(username);
nvps.add(password);
try {
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
response = httpclient.execute(httpost);
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
httpost.abort();
}
return true;
}
private String getRedirectLocation() {
Header locationHeader = response.getFirstHeader("Location");
if (locationHeader == null) {
return null;
}
return locationHeader.getValue();
}
private String getText(String redirectLocation) {
// http://www.kaixin001.com/home/?uid=6254552
HttpGet httpget = new HttpGet("http://www.kaixin001.com%22+redirectlocation/);
// Create a response handler
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = "";
try {
responseBody = httpclient.execute(httpget, responseHandler);
} catch (Exception e) {
e.printStackTrace();
responseBody = null;
} finally {
httpget.abort();
httpclient.getConnectionManager().shutdown();
}
return responseBody;
}
public void printText() {
if (login()) {
String redirectLocation = getRedirectLocation();
if (redirectLocation != null) {
System.out.println(getText(redirectLocation));
}
}
}
}