您的位置:程序门 -> .net技术 -> c#



winfrm模拟自动登录错误,高手请进。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


winfrm模拟自动登录错误,高手请进。[已结贴,结贴人:luosjz]
发表于:2007-02-05 13:45:42 楼主
每次登陆http://www2.baidu.com/太麻烦,做了个模拟自动登陆的跳转到另外一页http://www2.baidu.com/query/query_list.php并取html源码,但是有错误,错误在程序中已标出。那位大侠帮帮忙改改。
protected   static   string   cookieheader;
private   void   form1_load(object   sender,   eventargs   e)
{
        string   param   =   "action=&entered_login=luo&entered_password=123&entered_imagecode=ohtm "
        byte[]   bs   =   encoding.utf8.getbytes(param);
        httpwebrequest   req   =   (httpwebrequest)httpwebrequest.create( "http://www2.baidu.com/ ");
        req.method   =   "post ";
        req.allowautoredirect   =   true;
        req.contenttype   =   "application/x-www-form-urlencoded ";
        req.contentlength   =   bs.length;

        cookiecontainer   cookiecon   =   new   cookiecontainer();
        req.cookiecontainer   =   cookiecon;

        using   (stream   reqstream   =   req.getrequeststream())
        {
                //req.timeout   =   3000;
                reqstream.write(bs,   0,   bs.length);

                httpwebresponse   res   =   res   =   (httpwebresponse)req.getresponse();
                cookieheader   =   req.cookiecontainer.getcookieheader(new   uri( "http://www2.baidu.com/ "));
                httpcontext.current.application.lock();//错误为未将对象引用到实列
                httpcontext.current.application[ "cookieheader "]   =   cookieheader;
                httpcontext.current.application.unlock();
        }
        using   (webresponse   wr   =   req.getresponse())
        {
                streamreader   reader   =   new   streamreader(wr.getresponsestream(),   encoding.default);
                richtextbox1.text   =   reader.readtoend();
        }
        getpage();//用已有的cookie身份跳转的另外一页
}

public   static   string   getpage()  
{  
        httpwebresponse   res   =   null;  
        string   strresult   =   " ";  
        try  
        {  
                string   param   =   "action=&entered_login=luo&entered_password=123&entered_imagecode=ohtm "
                string   url= "http://www2.baidu.com/query/query_list.php ";
                httpwebrequest   req   =   (httpwebrequest)webrequest.create(url);  
                req.method   =   "post ";  
                req.keepalive   =   true;  
                req.contenttype   =   "application/x-www-form-urlencoded ";  
                cookiecontainer   cookiecon   =   new   cookiecontainer();  
                req.cookiecontainer   =   cookiecon;  
                req.cookiecontainer.setcookies(new   uri(url),cookieheader);  
                byte[]   somebytes   =   null;  
                somebytes   =   encoding.utf8.getbytes(param);  
                req.contentlength   =   somebytes.length;  
                stream   newstream   =   req.getrequeststream();  
                newstream.write(somebytes,   0,   somebytes.length);  
                newstream.close();  
                res   =   (httpwebresponse)req.getresponse();  
                stream   receivestream   =   res.getresponsestream();  
                encoding   encode   =   system.text.encoding.getencoding( "utf-8 ");  
                streamreader   sr   =   new   streamreader(   receivestream,   encode   );  
                richtextbox1.text   =   reader.readtoend();
        }
}
发表于:2007-02-05 13:52:181楼 得分:6
代码太长,没看
自动登录不就是代码写入一个用户名一个密码,然后调用一下登录按钮的那个事件?
也就是人点鼠标改成直接调用而已,没啥区别
发表于:2007-02-05 14:05:342楼 得分:12
代码太长,没看
自动登录不就是代码写入一个用户名一个密码,然后调用一下登录按钮的那个事件?
也就是人点鼠标改成直接调用而已,没啥区别

--------------------------
ls的真搞笑...
发表于:2007-02-05 14:10:513楼 得分:12
httpcontext.current.application.lock();//错误为未将对象引用到实列
                httpcontext.current.application[ "cookieheader "]   =   cookieheader;
                httpcontext.current.application.unlock();

改成
res.cookies   =   res.cookiecontainer.getcookies(req.requesturi);
发表于:2007-06-24 22:26:464楼 得分:0
..


快速检索

最新资讯
热门点击