周末没事,研究了下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));
   }
  }
 }
}

posted on 2010-07-25 22:58  懒懒的呐喊  阅读(834)  评论(0编辑  收藏  举报