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

 更新时间:2014年02月26日 09:19:30   作者:  
这篇文章主要介绍了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("登录失败");
     }
 }
}

相关文章

  • Java在排序数组中查找元素的第一个和最后一个位置的方法详解

    Java在排序数组中查找元素的第一个和最后一个位置的方法详解

    相信大家在操作Java的时候经常会要在一个数组(无序)中查找元素的第一个和最后一个位置,下面这篇文章主要给大家介绍了关于Java在排序数组中查找元素的第一个和最后一个位置的相关资料,需要的朋友可以参考下
    2024-01-01
  • java计算集合对称差的示例代码

    java计算集合对称差的示例代码

    本篇文章主要介绍了java计算集合对称差的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • java8 实现提取集合对象的每个属性

    java8 实现提取集合对象的每个属性

    这篇文章主要介绍了java8 实现提取集合对象的每个属性方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java Runtime的使用详解

    Java Runtime的使用详解

    这篇文章主要介绍了Java Runtime的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 基于jni调用时,jvm报错问题的深入分析

    基于jni调用时,jvm报错问题的深入分析

    本篇文章是对jni调用时,jvm的报错问题进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • SpringBoot实现MQTT消息发送和接收方式

    SpringBoot实现MQTT消息发送和接收方式

    这篇文章主要介绍了SpringBoot实现MQTT消息发送和接收方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java实现多行文字水印的方法详解

    Java实现多行文字水印的方法详解

    这篇文章主要为大家详细介绍了如何利用Java实现多行文字水印的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • 深入理解SpringBoot的配置环境属性

    深入理解SpringBoot的配置环境属性

    SpringBoot的配置环境属性是一种强大的工具,可以帮助我们配置和管理我们的应用程序,这篇文章主要介绍了SpringBoot的配置环境属性,需要的朋友可以参考下
    2023-07-07
  • Java中的LinkedHashMap详解

    Java中的LinkedHashMap详解

    这篇文章主要介绍了Java中的LinkedHashMap详解,LinkedHashMap继承自HashMap,它的多种操作都是建立在HashMap操作的基础上的,同HashMap不同的是,LinkedHashMap维护了一个Entry的双向链表,保证了插入的Entry中的顺序,需要的朋友可以参考下
    2023-09-09
  • 详解Java多线程编程中CountDownLatch阻塞线程的方法

    详解Java多线程编程中CountDownLatch阻塞线程的方法

    在Java中和ReadWriteLock.ReadLock一样,CountDownLatch的本质也是一个"共享锁",这里我们就来详解Java多线程编程中CountDownLatch阻塞线程的方法:
    2016-07-07

最新评论