当前位置:编程学习 > JAVA >>

模拟登陆实现不了!求解!!

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
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 javax.imageio.ImageIO;

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

public class main2 {
   public static void test()throws Exception {
//-----------------先获取cookie-----------------//
   String k="http://www.188w.com";
URL url = new URL(k); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setUseCaches(false); 
     connection.setDoOutput(true); 
     connection.setDoInput(true); 
     connection.setConnectTimeout(20000); 
     connection.setReadTimeout(10000); 
     connection.setRequestMethod("GET"); 
     connection.setRequestProperty("User-Agent",  "Mozilla/5.0 (compatible; MSIE 8.0; Windows 7)"); 
     connection.connect(); 
     String cookies = connection.getHeaderField("Set-Cookie"); 
     if (cookies!= null) 
     { 
         cookies = cookies.substring(0, cookies.indexOf(";")); 
     } 
     String codecookie=cookies+"; AJSTAT_ok_pages=1; AJSTAT_ok_times=1";
     connection.disconnect();
     
 //----------------获取验证码保存到本地!--------------//
String ki="http://www.188w.com/public/script/identifyCode.php";
URL url1 = new URL(ki); 
     HttpURLConnection connec = (HttpURLConnection) url1.openConnection(); 
     connec.setUseCaches(false); 
     connec.setDoOutput(true); 
     connec.setDoInput(true); 
     connec.setConnectTimeout(20000); 
     connec.setReadTimeout(20000); 
     connec.setRequestMethod("GET"); 
     connec.setRequestProperty("Cookie",codecookie);
     connec.setRequestProperty("User-Agent",  "Mozilla/5.0 (compatible; MSIE 8.0; Windows 7)"); 
     connec.connect(); 
     System.out.println(codecookie);
     File imgCodeFile = new File("/Users/mac/Documents/workspace/demo/picture/" + System.currentTimeMillis() + ".gif"); 
     BufferedImage image = ImageIO.read(connec.getInputStream()); 
     ImageIO.write(image, "gif", imgCodeFile); 
     connec.disconnect();
     //-------------------登陆-----------------------//
     String checkCode = GetCheckCode();
         String userName = "loli520";
     String password = "wrfl1346";
String params="username="+userName+"&password="+ password+"&passwordQues=3&passwordQuesA=wrf&code="+checkCode;
        URL Url = new URL("http://www.188w.com/user/login");   
        HttpURLConnection connect = (HttpURLConnection) Url.openConnection(); 
        connect.setUseCaches(false); 
        connect.setDoOutput(true); 
        connect.setDoInput(true); 
        connect.setConnectTimeout(10000); 
        connect.setReadTimeout(10000); 
        connect.setRequestMethod("POST"); 
        connect.setRequestProperty("User-Agent",  "Mozilla/5.0 (compatible; MSIE 8.0; Windows 7)"); 
connect.setRequestProperty("Cookie", codecookie);
connect.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connect.setRequestProperty("Content-Length", String.valueOf(params.length()));
        connect.connect(); 
       OutputStreamWriter out = new OutputStreamWriter(connect.getOutputStream(), "UTF-8");   
        out.write(params); //post的关键所在!        
        out.flush();     
        out.close();      
        connect.disconnect();
        
       //再次请求主页 
         HttpURLConnection Hi = (HttpURLConnection) url.openConnection(); 
    Hi.setUseCaches(false); 
    Hi.setDoOutput(true); 
    Hi.setDoInput(true); 
    Hi.setConnectTimeout(10000); 
    Hi.setReadTimeout(10000); 
    Hi.setRequestMethod("GET"); 
   Hi.setRequestProperty("Cookie", codecookie);
    Hi.setRequestProperty("User-Agent",  "Mozilla/5.0 (compatible; MSIE 8.0; Windows 7)"); 
    Hi.connect(); 
    String sCurrentLine;     
        String sTotalString;     
        sCurrentLine = "";     
        sTotalString = "";     
        InputStream l_urlStream;     
        l_urlStream = Hi.getInputStream();     
       BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream));   
       
        while ((sCurrentLine = l_reader.readLine()) != null) 
        {     
            sTotalString += sCurrentLine + "\r\n";     
        }   
        System.out.println(sTotalString);
        Hi.disconnect();
   }
//  ------------------------输入验证码!------------//
private static String GetCheckCode() 

    Scanner sc = new Scanner(System.in); 
    System.out.println("验证码在/Users/mac/Documents/workspace/demo/picture/目录下 ,请你查看并输入:"); 
    String inputCode = sc.next(); 
    return inputCode;
  }  
public static void main(String[] args) throws Exception  {     
    
    test();     

}

} --------------------编程问答-------------------- 我在eclipse下模拟请求,抓包居然没有抓到post请求!!!

[size=18px]如果大神能帮我发现错误,我回去手抄此代码20遍,发图为证!(我豁出去了)/size] --------------------编程问答-------------------- 你抓包抓得对的话,那就是在发Post的加断点呗。 --------------------编程问答-------------------- 兄弟啊,加点代码高亮吧!这很不耐看的。。。 --------------------编程问答--------------------
引用 3 楼 hjw506848887 的回复:
兄弟啊,加点代码高亮吧!这很不耐看的。。。
  我刚去其他板块发了个贴,现在没有编辑功能了!见谅哈! --------------------编程问答-------------------- 现在还是很难解决啊! --------------------编程问答-------------------- 楼主登陆的时候没有提示验证码不正吗? --------------------编程问答--------------------
引用 6 楼 suciver 的回复:
楼主登陆的时候没有提示验证码不正吗?

没有,直接是返回的信息提示没有登陆,我再登陆的同时抓包,居然没有抓到我请求的post,这不可能啊,兄台,是否愿意加一下我qq272420238 指导一下!不胜感激之!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,