您的位置:首页 > 理论基础 > 计算机网络

java 作为客户端发送http post请求登录网站首页。 HTTP/1.1 302 Found

2012-08-27 12:52 549 查看
尝试的一个网站,发现它的登录页面是会自动跳转的,再请求的话则会退回登录页面很是苦恼。提示: HTTP/1.1 302 Found

import org.apache.http.*;

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.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

public class Test1 {

    public static void main(String[] args) {

        DefaultHttpClient httpclient = new DefaultHttpClient();

        try {

            HttpGet httpget = new HttpGet("http://××××××.me/signin");

            HttpResponse response = httpclient.execute(httpget);

            HttpEntity entity = response.getEntity();

            System.out.println("Login form get: " + response.getStatusLine());

            EntityUtils.consume(entity);

            System.out.println("Initial set of cookies:");

            List<Cookie> cookies = httpclient.getCookieStore().getCookies();

            if (cookies.isEmpty()) {

                System.out.println("None");

            } else {

                for (int i = 0; i < cookies.size(); i++) {

                    System.out.println("- " + cookies.get(i).toString());

                }

            }

            HttpPost httppost = new HttpPost("http://××××××.me/signin");       //用户登录

            List<NameValuePair> nvps = new ArrayList<NameValuePair>();

            nvps.add(new BasicNameValuePair("signin_email", "207980892@qq.com"));

            nvps.add(new BasicNameValuePair("signin_password", "111111"));

            httppost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));

            response = httpclient.execute(httppost);

            entity = response.getEntity();

            System.out.println("Login form get: " + response.getStatusLine());

            EntityUtils.consume(entity);

            System.out.println("Post logon cookies:");

            cookies = httpclient.getCookieStore().getCookies();

            if (cookies.isEmpty()) {

                System.out.println("None");

            } else {

                for (int i = 0; i < cookies.size(); i++) {

                    System.out.println("- " + cookies.get(i).toString());

                }

            }

            /*String sessionID = response.getFirstHeader("Set-Cookie").getValue();

            httppost.addHeader("Cookie", sessionID);

            new DefaultHttpClient().execute(httppost);*/       //绑定session 其实ClientCookie可以重新获得cookie属性

            String url = "";   //页面跳转
            Header locationHeader = response.getFirstHeader("Location");
            System.out.println(locationHeader.getValue());
            if (locationHeader != null) {
                url = locationHeader.getValue(); // 得到跳转href
                HttpGet httpget1 = new HttpGet("http://××××××.me" + url);
                response = httpclient.execute(httpget1);
                // 登陆成功。。。hoho
            }

            entity = response.getEntity();

            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);

            }

//访问网站的子网页。

            HttpGet httpget1 = new HttpGet("http://××××××.me/setting");    //设置个人信息页面

            response = httpclient.execute(httpget1);

            entity = response.getEntity();

            System.out.println(response.getStatusLine());

            if (entity != null) {

                System.out.println("Response content length: " + entity.getContentLength());

            }

            // 显示结果

             reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));

             line = null;

            while ((line = reader.readLine()) != null) {

                System.out.println(line);

            }

        } catch (Exception e) {

        } finally {

            httpclient.getConnectionManager().shutdown();

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息