免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9063 | 回复: 6
打印 上一主题 下一主题

java发送http请求,解析html返回问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-11 16:26 |只看该作者 |倒序浏览
java发送http请求(含登陆用户名和密码),登陆结果解析html返回,为什么我这边会出问题啊?代码也没有什么问题啊!登录名和密码完全没用,返回的html文件总是网站首页未登录状态!!!求大神给指点一下!下面是代码!


public class TestPost {  
  
    public static void testPost() throws IOException {  
  
        /**
         * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
         *  java.net.URL and //java.net.URLConnection
         */  
        URL url = new URL("https://passport.csdn.net/account/login");  
        URLConnection connection = url.openConnection();  
        /**
         * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
         * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
         */  
        connection.setDoOutput(true);  
        /**
         * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
         */  
        OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");  
        out.write("username=go_shq&password=**********"); //post的关键所在!   
        // remember to clean up   
        out.flush();  
        out.close();  
        /**
         * 这样就可以发送一个看起来象这样的POST:  
         * POST /jobsearch/jobsearch.cgi HTTP 1.0 ACCEPT:
         * text/plain Content-type: application/x-www-form-urlencoded
         * Content-length: 99 username=bob password=someword
         */  
        // 一旦发送成功,用以下方法就可以得到服务器的回应:   
        String sCurrentLine;  
        String sTotalString;  
        sCurrentLine = "";  
        sTotalString = "";  
        InputStream l_urlStream;  
        l_urlStream = connection.getInputStream();  
        // 传说中的三层包装阿!   
        BufferedReader l_reader = new BufferedReader(new InputStreamReader(  l_urlStream));  
        while ((sCurrentLine = l_reader.readLine()) != null) {  
            sTotalString += sCurrentLine;  
        }  
        //System.out.println(sTotalString);
        File f = new File("d:/b.html");
        BufferedWriter bw = new BufferedWriter(new FileWriter(f));
        bw.write(sTotalString);
        bw.close();
    }  
  
    public static void main(String[] args) throws IOException {  
  
        testPost();  
      }
}

论坛徽章:
0
2 [报告]
发表于 2014-03-12 00:34 |只看该作者
求解救啊!!

论坛徽章:
31
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43CU十二周年纪念徽章
日期:2013-10-24 15:41:34丑牛
日期:2013-12-01 10:11:07水瓶座
日期:2014-01-15 08:47:25
3 [报告]
发表于 2014-03-12 16:45 |只看该作者
伙计,建议你先理解下http协议,至少要先搞懂get/post请求。

你这么发送请求也太小看CSDN了吧,你先抓包看看登陆流程的数据。

论坛徽章:
0
4 [报告]
发表于 2014-03-13 09:51 |只看该作者
回复 3# ddd010
恩,这个是原来另一个网站的用户登录数据,在csdn上是不行,但是我也抓过csdn的是下面这样的数据
ccounthandler.ashx?t=log&u=sdfwq&p=sqwefa&remember=0&f=http%3A%2F%2Fwww.csdn.net%2F&rand=0.673421390587464
我用这样的数据试了一下还是不行的!代码了解了一下,只懂意思,但是为什么不行还是要请教一下专业方面的

   

论坛徽章:
31
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43CU十二周年纪念徽章
日期:2013-10-24 15:41:34丑牛
日期:2013-12-01 10:11:07水瓶座
日期:2014-01-15 08:47:25
5 [报告]
发表于 2014-03-13 10:25 |只看该作者
剁猪肉馅 发表于 2014-03-13 09:51
回复 3# ddd010
恩,这个是原来另一个网站的用户登录数据,在csdn上是不行,但是我也抓过csdn的是下面这样 ...



不对,请求头,回应头,这些数据你都不管?

论坛徽章:
0
6 [报告]
发表于 2014-03-13 14:28 |只看该作者
请求头,回应头?这些都是什么?

论坛徽章:
0
7 [报告]
发表于 2014-03-13 14:29 |只看该作者
回复 5# ddd010


    请求头,回应头?这些都是什么? 我在抓取登陆流程的时候没看到这些啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP