java模拟post请求登录猫扑示例分享

代码如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import java.util.StringTokenizer;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class TestPost {
 public static void main(String args[]) throws IOException{ 
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入用户名:");
  String user_name = scanner.next();
  System.out.println("请输入密码:");
  String password = scanner.next();
  testPost(user_name , password,"d:/fileDown2.txt");
  testJsoup();
 }

public static void testPost(String user_name , String password,String outPath) throws IOException{
  String login =""; 
  URL url = new URL("http://passport.mop.com");
  HttpURLConnection connection = null;
  connection = (HttpURLConnection) url.openConnection();//建立链接

connection.setInstanceFollowRedirects(false);
  connection.setRequestProperty("Connection","keep-alive");
  connection.setRequestProperty("User-Agent",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36");
  connection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  connection.setDoInput(true);
  connection.setDoOutput(true);
//  connection.disconnect();
  String str = connection.getHeaderField("Location");//获得重定向的url地址
  URL newURL = new URL(str); 
//  String cookies = getCookies(connection);
  HttpURLConnection conn = (HttpURLConnection) newURL.openConnection();
  conn.setRequestProperty("Referer", str);//浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL
//  conn.setRequestProperty("Cookie", cookies); //发送设置cookie:
  conn.setRequestProperty("Connection","keep-alive");
  conn.setRequestProperty("User-Agent",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36");
  conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  conn.setDoInput(true);
  conn.setDoOutput(true);
  OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(),"utf-8");
  login =login+"user_name="+user_name+"&"+"password="+password;
  out.write(login);
  out.flush();
  out.close();
  InputStream inputStream = conn.getInputStream();
  BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
  reader.close();
  //链接到personal页面
  String headerName = null;
  StringBuilder myCookies = new StringBuilder();
//  myCookies.append(cookies + ";");
  for(int i =1;(headerName= conn.getHeaderFieldKey(i))!=null;i++){
    if(headerName.equals("Set-Cookie")){
     String cookie = conn.getHeaderField(i);
     cookie = cookie.substring(0, cookie.indexOf(";"));
     String cookieName = cookie.substring(0, cookie.indexOf("="));
     String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length());
     myCookies.append(cookieName + "=");
     myCookies.append(cookieValue + ";");
    }
  }
  URL purl = new URL("http://passport.mop.com/personal");
  HttpURLConnection pconn = (HttpURLConnection) purl.openConnection();
  pconn.setRequestProperty("Referer", str);
  pconn.setRequestProperty("Cookie", myCookies.toString());

pconn.connect();
  InputStream inputStream1 = pconn.getInputStream();
//  BufferedReader reader1 = new BufferedReader(new InputStreamReader(inputStream1,"utf-8"));
//  String line1 = reader1.readLine();
//  while(line1 != null){
//   System.out.println(line1);
//   line1 = reader1.readLine();
//  }
//  reader1.close();
  int chByte = 0;
  FileOutputStream fileOut = new FileOutputStream(new File(outPath));
  chByte = inputStream1.read();
  while(chByte != -1){
   fileOut.write(chByte);
   chByte = inputStream1.read();
  }
 }
 private static String getCookies(HttpURLConnection conn) {
  // TODO Auto-generated method stub
//     StringBuffer cookies = new StringBuffer();  
     StringBuilder cookies = new StringBuilder();
           String headName;

for (int i = 1; (headName = conn.getHeaderField(i)) != null; i++) {

StringTokenizer st = new StringTokenizer(headName, "; ");

while (st.hasMoreTokens()) {

cookies.append(st.nextToken() + "; ");  
               }  
           }             
           return cookies.toString();      
 }

private static void testJsoup() throws IOException{
  //解析html文档 
     File input = new File("D:/fileDown2.txt"); 
     Document doc = Jsoup.parse(input, "UTF-8");
//     for(Element ele : doc.getElementsByClass("zhnc").select("ul")){
//      if(!ele.select("li").toString().equals("")){
//       String text = ele.select("li").text();
//       System.out.println("user_name is:"+text);
//      }
//     } 
     Elements ele = doc.getElementsByClass("zhnc").select("ul");
     if(!ele.select("li").toString().equals("")){
      String text = ele.select("li").text();
      System.out.println("user_name is:"+text);
     }else{
      System.out.println("登录失败");
     }
 }
}

(0)

相关推荐

  • 注册验证java代码[针对上篇文章]

    http://www.jb51.net/article/19801.htm 复制代码 代码如下: <%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="java.sql.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/

  • Java+mysql用户注册登录功能

    最近刚刚开始学习mysql,所以就写了这个很基本的用户注册登录的功能来练练手.虽然这个很简单,但是我还是看到了自己学习的进步,很开心.哈哈哈. 这里要注意数据表的建立: 直接上代码吧,里面注释很详细了. package client; import java.sql.*; import java.util.*; public class Client { /** * 用以实现用户的注册和登录 */ private static String username;//用户登录注册的姓名 privat

  • java中servlet实现登录验证的方法

    login.java: 复制代码 代码如下: package com.ncu;import java.io.PrintWriter; import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class login extends HttpServlet{ public void do

  • JAVA简单链接Oracle数据库 注册和登陆功能的实现代码

    复制代码 代码如下: //User 用户的基本信息,也是USERINFO表中的3个列package 登陆判断; public class User { private String name;  private String loginname;  private String loginpsw;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;

  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

  • JAVA实现简单系统登陆注册模块

    前期准备 首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足.技术方面的进步大都都需要从实践中出来的. 功能:用户注册功能+系统登录功能+生成验证码 知识:窗体设计.数据库设计.JavaBean封装属性.JDBC实现对数据库的连接.验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息.随机获得字符串.对文本可用字符数的控制等 设计的模块预览图: 彩色验证码预览图: 所用数据库:MySQL 数据库设计

  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    采用Java Web所实现的MVC结构图如下,其中控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现. 思想基础 JSP+JavaBean两层结构工作原理应该是比较熟悉的,也比较好理解. 但是有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行 Servlet,把调用JavaBean的结果

  • java(jsp)整合discuz同步登录功能详解

    最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块,正好在开源中国上看到了一个利用discuz的UCenter功能实现同步登录的开源项目(https://code.google.com/p/discuz-ucenter-api-for-java/),不禁大喜,于是花了几个小时照着教程操作了一遍,居然很轻松的成功了,特写此文以做纪念.. Uenter是Comsenz旗下各个产品之间信息直接传递的一个桥梁,通过UCenter站长可以无缝整合Comsenz系列产品,实现用户的一站

  • Java简易登录注册小程序

    登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. 功能介绍:简单的登录注册系统,使用了数据库sqlserver.单例模式.正则表达式以及图形化开发等知识. 1.在登录界面,可以登录或者注册用户. 注册用户界面,按照正则表达式规定的格式要求来输入信息,若有误,则重新输入. 2.点击注册,首先连接SQLserver数据库,连接成功则会判断该用户名是否已经存在,若存在,则给出提示.反之则进行注册. 3.登录界面,点击登录按钮时,首先与数据库

  • java中使用Filter控制用户登录权限具体实例

    学jsp这么长时间,做的项目也有七八个了,可所有的项目都是用户登录就直接跳转到其拥有权限的页面,或者显示可访问页面的链接.使用这种方式来幼稚地控制访问权限.从来没有想过如果我没有登录,直接输入地址也可以直接访问用户的页面的. 在jsp中权限的控制是通过Filter过滤器来实现的,所有的开发框架中都集成有Filter,如果不适用开发框架则有如下实现方法: LoginFilter.java 复制代码 代码如下: public class LoginFilter implements Filter {

随机推荐