首页 > 代码库 > 爬虫模拟登陆

爬虫模拟登陆

package http.login;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.CookieStore;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.protocol.ClientContext;import org.apache.http.cookie.Cookie;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.BasicCookieStore;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.impl.cookie.BasicClientCookie;import org.apache.http.protocol.BasicHttpContext;import org.apache.http.protocol.HttpContext;import org.junit.Test;public class LoginTest2 {    private static CookieStore cs = new BasicCookieStore();    @Test    public void test1() throws Exception {        DefaultHttpClient httpclient = new DefaultHttpClient();        // 创建一个本地上下文信息        HttpContext localContext = new BasicHttpContext();        // 在本地上下问中绑定一个本地存储        localContext.setAttribute(ClientContext.COOKIE_STORE, cs);        // 目标地址        HttpPost httppost = new HttpPost(                "http://localhost:8080/app/login");        System.out.println("请求: " + httppost.getRequestLine());        // 构造最简单的字符串数据        StringEntity reqEntity = new StringEntity(                "username=admin&password=admin");        // 设置类型        reqEntity.setContentType("application/x-www-form-urlencoded");        // 设置请求的数据        httppost.setEntity(reqEntity);        // 执行        HttpResponse response = httpclient.execute(httppost);        Header[] headers = response.getAllHeaders();        for (Header h : headers) {            String name = h.getName();            String value = http://www.mamicode.com/h.getValue();"kwrd">out.println("header : " + h.getName() + ":" + h.getValue());            if ("Set-Cookie".equalsIgnoreCase(name)) {                String[] strs = value.split(";");                for (String str : strs) {                    String[] cookies = str.split("=");                    System.out.println("=============== : " + cookies[0] + ":"                            + cookies[1]);                    cs.addCookie(new BasicClientCookie(cookies[0], cookies[1]));                }            }        }        HttpEntity entity = response.getEntity();        System.out.println("----------------------------------------");        System.out.println(response.getStatusLine());        if (entity != null) {            System.out.println("Response content length: "                    + entity.getContentLength());        }        // 显示结果        BufferedReader reader = new BufferedReader(new InputStreamReader(                entity.getContent(), "UTF-8"));        String line = null;        while ((line = reader.readLine()) != null) {            System.out.println(line);        }        opera();    }    private void opera() throws Exception {        System.out.println("----------------------------------------");        System.out.println("----------------------------------------");        String logPath = http://localhost:8080/app/log;        DefaultHttpClient httpclient = new DefaultHttpClient();        String cookieStr = "";        List<Cookie> list = cs.getCookies();        for (Cookie cookie : list) {            cookieStr += cookie.getName() + "=" + cookie.getValue() + ";";        }        // 目标地址        HttpGet httpget = new HttpGet(logPath);        httpget.setHeader("Cookie", cookieStr);        System.out.println("请求: " + httpget.getRequestLine());        // 设置类型        // 执行        HttpResponse response = httpclient.execute(httpget);        HttpEntity entity = response.getEntity();        BufferedReader reader = new BufferedReader(new InputStreamReader(                entity.getContent(), "UTF-8"));        String line = null;        while ((line = reader.readLine()) != null) {            System.out.println(line);        }    }}
工程配置包参考:
http://files.cnblogs.com/alex-blog/pom.xml
 

本文参考:

http://topmanopensource.iteye.com/blog/821954(还有一些没有记录下来)

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html

<style></style>

爬虫模拟登陆